Почему следующий код после выполнения в python дает тип «генератора»?
dic= ((I, (I**3)) for I in range(25))
print type(dic)
Выход:
Может кто-нибудь объяснит мне?
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'>
Если вы собираетесь генерировать большое количество данных, но вам нужна только одна, тогда вы можете использовать генератор, как у вас в коде
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 ) ]
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.