Tag: итераторов

Генератор не закрывает данные, как ожидалось

Извините, если заголовок плохо сформулирован, я не уверен, как его выражать. У меня есть функция, которая в основном выполняет итерацию над вторым измерением двумерного итеративного. Ниже приводится простое воспроизведение: words = ['ACGT', 'TCGA'] def make_lists(): for i in range(len(words[0])): iter_ = iter([word[i] for word in words]) yield iter_ lists = list(make_lists()) for list_ in lists: […]

Применение функции списка к вложенным генераторам в itertools.groupby

Как работает функция list при применении к вложенным генераторам? В следующем фрагменте кода я считаю поведение довольно загадочным: кажется, что list потребляет большую часть вложенных генераторов, кроме последнего, который все еще сохраняет один элемент: >>> from itertools import groupby >>> xs = [1, 2, 2, 3, 3] >>> for k, g in list(groupby(xs)): … print(k, […]

Разница между <type 'generator'> и <type 'xrange'>

Я видел много сообщений / материалов, говорящих, что xrange (num) является генератором / итератором. У меня есть пара вопросов по этому поводу. Я хочу знать точную разницу между типом «xrange» и «генератором» типа, Если xrange является итератором / генератором, он должен иметь метод .next (). Я не понимаю, почему метод .next () не работает для […]

Итераторы для встроенных контейнеров

По моему __iter__ , вы можете легко создать итератор для пользовательского объекта, просто определяя как метод __next__ метод __next__ для него. Это довольно интуитивно понятно. Я также понимаю, что вы можете вручную создать итератор для любого встроенного контейнера, просто называя метод iter() в этом контейнере. Используя в качестве примера какой-либо контейнер, я не понимаю, почему […]

Неплохо ли стиль Python возвращает пустые итераторы, а не None?

Мнения, по-видимому, смешаны в этом вопросе – есть ли у них питонический «правильный путь»?

Python: итерация по непустому списку без if-предложения становится пустой. Зачем?

Как итератор по непустой последовательности без фильтрации и без агрегации ( sum() и т. Д.) Ничего не дает? Рассмотрим простой пример: sequence = ['a', 'b', 'c'] list((el, ord(el)) for el in sequence) Это дает [('a', 97), ('b', 98), ('c', 99)] как и ожидалось. Теперь просто замените ord(el) out на выражение, которое берет первое значение из […]

Доступ к локальным переменным внутри генератора Python

Как вы можете получить доступ к локальной переменной, определенной внутри генератора Python вне генератора? У меня есть случай, когда мой генератор управляет локальным состоянием, а для unittests я хочу проверить это состояние, чтобы убедиться, что он содержит правильные значения. Я не могу сохранить состояние переменной экземпляра (например, self.state = blah), потому что я мог бы […]

Python: Итератор возвращает None

Вот мой код: class Prizes(object): def __init__(self, purchases, n, d): self.p = purchases self.n = n self.d = d self.x = 1 def __iter__(self): return self def __next__(self): print(self.x) if self.x % self.n == 0 and self.p[self.x – 1] % self.d == 0: self.x = self.x + 1 return self.x – 1 elif self.x > […]

Как создать оптимизированный итератор для длинного списка целых чисел?

Скажем, у меня есть очень большой список целых чисел, который занимает очень большой объем памяти. Если целые числа в списке были равномерными, я мог бы легко выразить список как итератор, занимающий сравнительно не память. Но с более сложными шаблонами было бы сложнее выразить этот список как итератор. Есть ли пакет Python, который может анализировать список […]

Эффективное перечисление упорядоченных подмножеств в Python

Я не уверен в соответствующей математической терминологии для кода, который я пытаюсь написать. Я хотел бы генерировать комбинации уникальных целых чисел, где «упорядоченные подмножества» каждой комбинации используются для исключения некоторых более поздних комбинаций. Надеюсь, что пример будет ясно: from itertools import chain, combinations ​ mylist = range(4) max_depth = 3 rev = chain.from_iterable(combinations(mylist, i) for […]

Python - лучший язык программирования в мире.