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

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

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

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

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

Реализовать функцию iteritems для моего пользовательского итератора?

Цель следующей программы – изучить генераторы питона и реализацию итератора, чтобы понять магические методы Python. Я застрял в реализации функции iteritems() . Кроме того, я хочу знать, иду ли я в правильном направлении или я концептуально ошибаюсь в понимании методов магии питона. import random class Random(object): """ generate randomised int of specified length –> [r1, […]

Python как превратить результат метода в генератор

У меня есть следующее наследование: class Processor(object): def get_listings(self): """ returns a list of data """ raise NotImplemented() def run(self): for listing in get_listings(): do_stuff(listing) class DBProcessor(Processor): def get_listings(self): """ return a large set of paginated data """ … for page in pages: for data in db.fetch_from_query(…): yield data Хотя это работает, это не удается […]

Итерации через несколько отсортированных списков в порядке

Предположим, что у меня есть несколько списков пар (int, str), не обязательно одной длины. Единственное ограничение здесь состоит в том, что списки сортируются в порядке возрастания по их целым частям: a = [(1, 'a'), (4, 'a'), (6, 'b'), (7, 'c'), (12, 'a')] b = [(5, 'd'), (10, 'c'), (11,'e')] c = [(0, 'b'), (3, 'd')] […]

itertools или рукописный генератор – что предпочтительнее?

У меня есть ряд генераторов Python, которые я хочу объединить в новый генератор. Я легко могу сделать это с помощью написанного вручную генератора, используя кучу операторов yield . С другой стороны, модуль itertools создан для подобных вещей, и для меня кажется, что питонический способ создания генератора, который мне нужен, – это подключить различные итераторы этого […]

Вызов нескольких итераторов на объектах xrange

Почему zip(*[xrange(5)]*2) дают [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)] но zip(*[iter(xrange(5))]*2) дают [(0, 1), (2, 3)] ? Я всегда, хотя этот генератор был итератором, поэтому он на генераторе был не-op. Например, list(iter(xrange(5))) [0, 1, 2, 3, 4] такой же как list(xrange(5)) [0, 1, 2, 3, 4] (То же самое верно для […]

__iter __ (), реализованный как генератор

У меня есть подкласс объекта, который реализует динамическую рассылку __ iter __ с использованием генератора кеширования (у меня также есть метод для недействительности кеша iter) следующим образом: def __iter__(self): print("iter called") if self.__iter_cache is None: iter_seen = {} iter_cache = [] for name in self.__slots: value = self.__slots[name] iter_seen[name] = True item = (name, value) […]

Почему этот генератор Fizz Buzz значительно быстрее, чем этот класс Fizz Buzz Iterator?

Изучив методы и генераторы класса итераторов, я испытал характеристики производительности простых решений Fizz Buzz, используя каждую идиому: >>> from timeit import timeit >>> timeit('tuple(fizzbuzz.FizzBuzzIterator(10))', 'import fizzbuzz') 13.281935930252075 >>> timeit('tuple(fizzbuzz.fizz_buzz_generator(10))', 'import fizzbuzz') 7.619534015655518 Согласно timeit функция генератора примерно в 1¾ раза быстрее, чем класс итератора. Мой вопрос снова: почему этот генератор Fizz Buzz значительно быстрее, чем […]

Исключение Python: исключение StopIteration и список

Я хотел бы прочитать не более 20 строк из файла csv: rows = [csvreader.next() for i in range(20)] Работает нормально, если файл имеет 20 или более строк, в противном случае с исключением исключения StopIteration. Есть ли элегантный способ справиться с итератором, который может генерировать исключение StopIteration в понимании списка или использовать регулярный цикл?

 
Interesting Posts for Van-Lav

Как объявить и добавить элементы в массив в Python?

newline не работает с python 2.7

Как общаться между Python и C # с помощью XML-RPC?

./xx.py: строка 1: import: команда не найдена

мелкая итерация с nditer

cPickle – разные результаты травления одного и того же объекта

В django существует ли способ напрямую аннотировать запрос связанным объектом в одном запросе?

Как выразить классы по оси тепловой карты в Сиборне

Объединение 2 наборов данных csv с Python общим столбцом идентификатора – один csv имеет несколько записей для уникального идентификатора

Диэдра / угол кручения из четырех точек в декартовых координатах в Python

Почему не усекается должным образом правильное положение текущей позиции для файлов?

csv.reader читает из потока Requests: iterator должен возвращать строки, а не байты

Рассортировать динамически параметризованный подкласс

Принудительно импортировать модуль из текущего каталога

Установка форматов ячеек со строками формата xlwt

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