Рубрики
Без рубрики

Список Понимание Python Список списков

[20-сек сводка] Учитывая список списка, хранящихся в переменной LST. Чтобы сгладить список списков, используйте оператор понимания списка [X для L в LST для X в L]. Чтобы изменить все элементы в списке списка списков (например, увеличивайте их на единицу), используйте список понятных списков [[x + 1 для X … список пониманий Python Python, Подробнее »

Автор оригинала: Chris.

[ Сводка 20-секунды] Учитывая список списка, хранящихся в переменной lst Отказ

  • Чтобы сгладить список списков, используйте оператор понимания списка [X для L в LST для X в L] .
  • Чтобы изменить все элементы в списке списков (например, увеличивайте их на один), используйте список пониманий списка [[x + 1 для x в l] для l в lst] .

Понимание списка является компактным способом создания списков. Простая формула – [Выражение + контекст] Отказ

  • Выражение : Что делать с элементом каждого списка?
  • Контекст : Каков элементы списка выбрать? Он состоит из произвольного количества для и если утверждения.

Пример [X для X в диапазоне (3)] Создает список [0, 1, 2] Отказ

В этом руководстве вы узнаете три способа, как применить понимание списка списков:

  • к сплющить Список списков
  • к создать Список списков
  • к ИТЕРТЬ ИСПОЛЬЗОВАТЬ Список списков

Кроме того, вы узнаете, как применить вложенный список. Так что давайте начнем!

Понимание списка Python Список списков списков

Проблема : Учитывая Список списков Отказ Как сгладить список списков, избавившись от внутренних списков – и сохраняя свои элементы?

Пример : Вы хотите преобразовать данный список в плоский список, как здесь:

lst = [[2, 2], [4], [1, 2, 3, 4], [1, 2, 3]]

# ... Flatten the list here ...

print(lst)
# [2, 2, 4, 1, 2, 3, 4, 1, 2, 3]

Решение : Используйте вложенное Понимание списка Заявление [X для L в LST для x в l] сгладить список.

lst = [[2, 2], [4], [1, 2, 3, 4], [1, 2, 3]]

# ... Flatten the list here ...
lst = [x for l in lst for x in l]

print(lst)
# [2, 2, 4, 1, 2, 3, 4, 1, 2, 3]

Объяснение : В утверждении вложенного списка [X для L в LST для x в l] , вы сначала повторяете все списки в списке списков ( для L в LST ). Затем вы итерете все элементы в текущем списке ( для X в L ). Этот элемент, вы просто размещаете во внешний список, без изменений, используя его в разделе «Выражение». Частью оператора понимания списка [ х для l в lst для x в l] Отказ

Попробуйте сами : Вы можете выполнить этот код в нашей интерактивной оболочке Python. Просто нажмите «Запустить» и проверить вывод этого кода.

Можете ли вы сгладить трехмерный список списков списков списков)? Попробуйте в раковине!

Понимание списка Python Создать список списков

Проблема : Как создать список списков, изменив каждый элемент исходного списка списков?

Пример : Вам дан список

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Вы хотите добавить один к каждому элементу и создать новый список списков:

[[2, 3, 4], [5, 6, 7], [8, 9, 10]]

Решение : Используйте два утверждения вложенного списка.

lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new = [[x+1 for x in l] for l in lst]
print(new)
# [[2, 3, 4], [5, 6, 7], [8, 9, 10]]

Объяснение : Вы будете изучать дополнительные примеры двух вложенных утверждений по пониманию списка позже. Основная идея состоит в том, чтобы использовать в качестве «выражения» наружного списка. Заявление о порядке понимания списка само по себе. Помните, что вы можете создать любой объект, который вы хотите в выражении части вашего описания списка.

Исследуйте код : Вы можете играть с кодом в интерактивном репетиторе Python, который визуализирует шаг за шагом выполнения. Просто нажмите кнопку «Далее» несколько раз, чтобы увидеть, что происходит на каждом этапе кода.

Давайте исследуем третий вопрос: как использовать список списков, чтобы повторить список списков?

Понимание списка Python в списке списков

Вы видели это в предыдущем примере, где вы не только создали список списков, вы также итасировали каждый элемент в списке списков. Чтобы обобщить, вы можете повторить список списков списка списков, используя оператор [[Изменить (x) для x в l] для l в lst] используя любое утверждение или Функция Изменить (х) Это возвращает произвольную объект Отказ

Как работает вложенный список в Python?

После публикации первой версии этого руководства многие читатели попросили меня написать последующий учебник по вопросам понимания вложенного списка в Python. Есть две интерпретации вложенного списка понимания:

  • Приходя с компьютерной науки, я предполагал, что «понимание вложенного списка» относится к созданию списка списков. Другими словами: Как создать вложенный список с пониманием списка?
  • Но после немного исследований я узнал, что есть вторая интерпретация вложенного списка понимания: Как использовать вложенное для петли в списке понимание?

Как создать вложенный список с пониманием списка?

Можно создать вложенный список с пониманием списка в Python. Что такое вложенный список? Это список списков. Вот пример:

## Nested List Comprehension
lst = [[x for x in range(5)] for y in range(3)]
print(lst)
# [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

Как видите, мы создаем список с тремя элементами. Каждый элемент списка – это список самостоятельно.

Все становится ясно, когда мы вернемся к нашей магической формуле понимания списка: [Выражение + контекст] Отказ Часть выражения генерирует новый список, состоящий из 5 целых чисел. Контекстная часть повторяет это три раза. Следовательно, каждый из трех вложенных списков имеет пять элементов.

Если вы являетесь продвинутым программистом ( Проверить свои навыки на приложении Finxter ), вы можете спросить, есть ли появляться некоторые псевдонимы здесь. Псевдонимы в этом контексте означает, что три элемента списка указывают на тот же список [0, 1, 2, 3, 4] Отказ Это не так, потому что каждое выражение оценивается отдельно, новый список создан для каждого из трех выполнений контекста. Это красиво продемонстрировано в этом фрагменте кода:

l[0].append(5)
print(l)
# [[0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
# ... and not [[0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5]]

Как использовать вложенное для петли в списке понимание?

Быть Фрэнком, последний – это супер-простые вещи. Вы помните формулу Понимание списка (= '[' + выражение + контекст + ']' )?

Контекст представляет собой произвольную комплексную конструкцию ограничения для циклов и если ограничения с целью указания элементов данных, на которых следует применять выражение.

В выражении вы можете использовать любую переменную, которую вы определяете в цикле для цикла в контексте. Давайте посмотрим на пример.

Предположим, вы хотите использовать список пониманий, чтобы сделать этот код более лаконичным (например, вы хотите найти все возможные пары пользователей в вашей социальной сети):

# BEFORE
users = ["John", "Alice", "Ann", "Zach"]
pairs = []
for x in users:
    for y in users:
        if x != y:
            pairs.append((x,y))
print(pairs)
#[('John', 'Alice'), ('John', 'Ann'), ('John', 'Zach'), ('Alice', 'John'), ('Alice', 'Ann'), ('Alice', 'Zach'), ('Ann', 'John'), ('Ann', 'Alice'), ('Ann', 'Zach'), ('Zach', 'John'), ('Zach', 'Alice'), ('Zach', 'Ann')]

Теперь этот код – беспорядок! Как мы можем исправить это? Просто используйте вложенный список!

# AFTER
pairs = [(x,y) for x in users for y in users if x!=y]
print(pairs)
# [('John', 'Alice'), ('John', 'Ann'), ('John', 'Zach'), ('Alice', 'John'), ('Alice', 'Ann'), ('Alice', 'Zach'), ('Ann', 'John'), ('Ann', 'Alice'), ('Ann', 'Zach'), ('Zach', 'John'), ('Zach', 'Alice'), ('Zach', 'Ann')]

Как видите, мы делаем точно так же, как и с непонятым вложенным списком. Единственное отличие – написать два для петлей и Если заявление в одной строке в пределах списка обозначения [] Отказ

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.