[ Сводка 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 и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.