Почему следующий код после выполнения в python дает тип «генератора»?

dic= ((I, (I**3)) for I in range(25))

print type(dic)

Выход:

Может кто-нибудь объяснит мне?

-1
Nagesh 24 Апр 2017 в 22:59

2 ответа

Лучший ответ

Результирующий тип определяется окружающими скобками:

>>> dic = ((I, (I**3)) for I in range(25))
>>> type(dic)
<class 'generator'>

>>> dic = [(I, (I**3)) for I in range(25)]
>>> type(dic)
<class 'list'>

>>> dic = {I: (I**3) for I in range(25)}
>>> type(dic)
<class 'dict'>
0
Maurice Meyer 24 Апр 2017 в 20:08

Если вы собираетесь генерировать большое количество данных, но вам нужна только одна, тогда вы можете использовать генератор, как у вас в коде

dic= ((I, (I**3)) for I in range(25))
# type of dic is a generator

Но если вы хотите, чтобы в памяти были все данные в виде списка, тогда вместо использования предлога используйте скобки.

dic= [(I, (I**3)) for I in range(25)]
# type of dic is list

Результат: [(0, 0), (1, 1), (2, 8), (3, 27), (4, 64), (5, 125), (6, 216), (7, 343) , (8, 512), (9, 729), (10, 1000), (11, 1331), (12, 1728), (13, 2197), (14, 2744), (15, 3375), ( 16, 4096), (17, 4913), (18, 5832), (19, 6859), (20, 8000), (21, 9261), (22, 10648), (23, 12167), (24, 13824 ) ]

1
Zohaib Ijaz 24 Апр 2017 в 20:06
43596723