a = (x for x in range(5))
print(type(a)) # prints "<class 'generator'>"
Но это поднимает SyntaxError
(как и ожидалось):Неявный генератор внутри скобок класса конструктора?
a = x for x in range(5)
Если я хочу, чтобы определить кортеж со значениями от генератора, оба эти работы:
tup1 = tuple(x for x in range(5))
tup2 = tuple((x for x in range(5)))
В tup1
, то скобки являются частью конструктора класса tuple
. Но почему это работает?
Потому что это было определено именно так. А также не столкнуться с синтаксисом цикла 'for' – JBernardo
@JBernardo Но что передается конструктору класса кортежа? И первый подход правильный? –
Кронштейны имеют 2 функции (оберните генератор и вызов функции) в примере 'tup1'. Это правильный способ сделать, если в функции есть только один аргумент. – JBernardo