«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Могут ли списки списков иметь зависимые итераторы?

Могут ли списки списков иметь зависимые итераторы?

Опубликовано 21 декабря 2024 г.
Просматривать:870

 Can List Comprehensions Have Dependent Iterators?

Независимые итераторы в генераторе списков

В Python генераторы списков допускают несколько циклов итерации. Рассмотрим следующий пример:

[(x, y) for x in a for y in b]

где a и b — последовательности. Это понимание создает пары элементов из декартова произведения a и b.

Могут ли итераторы быть зависимыми?

Может ли один итератор в понимании списка ссылаться на другой? Ответ — да, и следующий код демонстрирует это:

[x for x in a for a in b]

В этом понимании итератор внешнего цикла a становится итератором для внутреннего цикла. Это эффективно выравнивает вложенный список.

Пример

Если у нас есть вложенный список a:

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

Следующее понимание списка сведет его в один список:

[x for x in a for a in b]

Результат:

[1, 2, 3, 4]

Альтернативное решение с использованием генераторов

В предоставленном коде Python текст хранится в виде предложений, и задача для извлечения одного списка слов. Вот как этого можно добиться с помощью генератора:

text = (("Hi", "Steve!"), ("What's", "up?"))
gen = (word for sentence in text for word in sentence)

Переменная gen теперь возвращает плоский список слов:

for word in gen:
    print(word)

Вывод:

Hi
Steve!
What's
up?
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3