Значение итератора не сохраняется после вызова any () - PullRequest
1 голос
/ 19 мая 2011

У меня есть следующий фрагмент кода. Я в основном пытаюсь получить индекс / итератор конкретной строки в списке (помимо просто знать, присутствует ли она). Это вообще возможно, или я должен использовать цикл с ан-если?

bucket = ["alpha", "beta", "gamma"]

content = ""

если есть (content == "beta" для контента в корзине): печатный контент

Наличие «контента» как глобального или просто внутри цикла не имеет значения

Ответы [ 2 ]

1 голос
/ 19 мая 2011

Выражения генератора не пропускают итератор. Составьте список в 2.x, но не в 3.x.

1 голос
/ 19 мая 2011

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

item = [x for x in enumerate(bucket) if x[1] == "beta"]

, который генерирует список всех совпадающих элементов плюс индексы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...