Описание тега generator-expression

A syntactic construct in Python providing a concise way to create a generator object, with syntax similar to a list comprehension.
1 ответ

Пропустить запись в выражении генератора

Каков наилучший способ пропустить записи в выражении генератора, созданные с использованием функции и другого генератора? По сути, я ищу выражение, которое выглядит так: some_iter = (some_function(_x, _y, **kwargs) or continue for _x, _y in some_gen…
1 ответ

Можно ли изменить это выражение генератора, чтобы оно соответствовало результату цикла?

Рассмотрим это для цикла: y = [] for z in ('a', 'b\nc', 'd'): y.extend(z.splitlines()) Плоский список y не получен аналогичным образом y = [] y.extend(z.splitlines() for z in ('a', 'b\nc', 'd')) Можно ли изменить выражение генератора, чтобы оно возв…
25 июл '14 в 20:33
3 ответа

Как использовать уменьшить / карту / список понимания для суммирования?

У меня есть уравнение выше, и я хочу вычислить сумму, подчеркнутую красным, и [ρ0,ρ1,ρ2,...,ρN] - это список для начала. Цикл for, безусловно, может решить проблему. Но мне было интересно, есть ли более лаконичный питонический стиль для этого. Я поп…
06 мар '15 в 15:28
2 ответа

Повторное использование выражений генератора

Выражения генератора - чрезвычайно полезный инструмент, имеющий огромное преимущество по сравнению со списками, заключающимися в том, что он не выделяет память для нового массива. Проблема, с которой я сталкиваюсь с выражениями генератора, что в ито…
23 мар '18 в 10:24
2 ответа

Выражение генератора, итератор доступа

Я пытаюсь escape элементы в списке, сверяя их с другим списком элементов. Я могу отфильтровать список: @staticmethod def escapeFrameData(frameData): toEscape = [0x7e, 0x7d, 0x11, 0x13] genExpr = (x for x in frameData if x in toEscape) for x in genEx…
3 ответа

Различия между генераторами выражений понимания

Насколько я знаю, есть три способа создания генератора посредством понимания 1. Классический: def f1(): g = (i for i in range(10)) yield вариант: def f2(): g = [(yield i) for i in range(10)] yield from вариант (который поднимает SyntaxError кроме ка…
19 июл '17 в 12:32
0 ответов

Выражения генератора питона в определениях классов

Я пишу простой класс в Python 2.7.13, и я столкнулся с удивительной ошибкой: class X(object): T = 'test {}' A1 = [x for x in T] # ok A2 = tuple([x for x in T]) # ok A3 = tuple(x for x in T) # ok B1 = [T.format(x) for x in (1,2)] # ok B2 = tuple([T.f…
1 ответ

Предупреждение об устаревании Python относительно функции sum

Я кодировал алгоритм, и он работал правильно до 2 недель назад. Я получаю это предупреждение, и я не могу понять, почему я его получаю. Предупреждение: "C: /Users/Administrator/Documents/Python/sezg_1_diffne.py: 147: DeprecationWarning: вызов np.sum…
2 ответа

Более компактное понимание списка, где переменная итерации не используется

У меня есть несколько функций выборки, которые нужно вызывать определенное количество раз, как в следующей инструкции: samples = [do_sampling() for _unused in range(n_samples)] Интересно, есть ли более компактный способ выразить это утверждение, осо…
1 ответ

Получить соответствующий элемент из выражения генератора

Я написал if условие с выражением генератора. self.keyword_list = ['Buzz', 'Heard on the street', 'familiar with the development', 'familiar with the matter', 'Sources' ,'source', 'Anonymous', 'anonymity', 'Rumour', 'Scam', 'Fraud', 'In talks', 'Lik…
10 сен '15 в 09:32
4 ответа

Странный python для синтаксиса, как это работает, как он называется?

print max(3 for i in range(4)) #output is 3 Использование Python 2.6 3 сбивает меня с толку, вот моя попытка объяснить, что происходит. поскольку i в диапазоне (4) создает цикл, который повторяется 4 раза, увеличивая значение i от 0 до 3 в начале ка…
13 май '11 в 20:41
0 ответов

Я пытаюсь использовать списочный анализ с массивами numpy, генерируя одно выражение генератора в массиве numpy. Зачем?

Поэтому я пишу код, который будет развернут на Raspberry Pi. Из-за вычислительных ограничений Raspberry Pi и ряда шагов, которые он предпринимает для этого конкретного использования (захват и обработка изображений), я подумал, что будет лучше, если …
5 ответов

Могу ли я использовать выражение генератора для печати пар ключ-значение из списка словарей?

У меня есть список словарей: dictlist = [{'key1':'value1', 'key2':'value2'}, {'key3':'value3', 'key4':'value4'}] Я в настоящее время печатаю ключ, пары значений, как это: for d in dictlist: for key in d: print .format('{} ---> {}').format(key,d[k…
1 ответ

Применить функцию n раз, используя все предыдущие результаты

Мне было интересно, есть ли питонный способ применить функцию несколько раз, когда все последние результаты снова вводятся с использованием понимания списка или выражения генератора вместо цикла for, подобного этому? import numpy as np def func(x, s…
0 ответов

Понимание списка и передача выражения генератора в список

Существует мнение, что понимание списка является синтаксическим сахаром для передачи выражения генератора в list ( 1, 2). Хотя я не могу точно определить внутреннюю динамику, чтобы доказать, что это не так, я смог показать, что между этими двумя мет…
2 ответа

Объединение множеств Python вызывает TypeError

Рассмотрим последовательность множеств: >>> [{n, 2*n} for n in range(5)] [{0}, {1, 2}, {2, 4}, {3, 6}, {8, 4}] Передача их непосредственно в метод объединения дает правильный результат: >>> set().union({0}, {1, 2}, {2, 4}, {3, 6}, …
16 авг '18 в 07:31
1 ответ

Генератор Python в представлении словаря не выглядит лениво

Насколько я понимаю, выражения генератора python возвращают лениво оцененные понимания и видят объекты в словарях, которые обновляются при изменении базового словаря. Учитывая следующий код (Python 2.7.6 Windows): d = {} gt_three = (x for x in d.vie…
17 фев '14 в 11:27
2 ответа

Наличие выражения генератора в качестве входного аргумента в Python

Как я могу взаимодействовать со значениями выражения генератора? Например: def sumValues(*args): # compute the sum of values sumValues(abs(x) for x in range(0,10)) Когда диапазон известен (например, мы знаем, что диапазон равен [0,10)), мы можем пос…
2 ответа

Инициализировать несколько списков в Python

a = 2 b = 3 c = 4 x = y = z = [0 for i in xrange(a*b*c)] Есть ли способ, которым x,y,z могут быть инициализированы в одной строке (потому что я не хочу умножать a, b и c для каждой инициализации списка), как отдельные списки из 0. В приведенном выше…
04 авг '16 в 10:12
2 ответа

Простой способ превратить генератор в понимание списка без дублирования кода в Python?

У меня есть что-то вроде этого: class TransMach: def __init__(self, machfile, snpfile): self.machfile = machfile self.snpfile = snpfile def __translines(self): fobj = open(self.machfile) lines = (l.strip().split()[2] for l in fobj) tlines = zip(*lin…