Ошибка отсутствует. Я думаю, вы просто пытаетесь распечатать список. Используйте []
, чтобы получить список вместо генератора:
if __name__ == '__main__':
print([i*i for i in range(5)])
Выход:
[0, 1, 4, 9, 16]
Для печати на отдельных строках вы должны:
if __name__ == '__main__':
print('\n'.join([str(i*i) for i in range(5)]))
Используется подход 'delimiter'.join(list)
для объединения всех элементов списка с указанным разделителем (в этом случае строка новой строки: \n
)
Выход:
0
1
4
9
16
Или, как предложили @MartijnPieters (только для python3), вы также можете:
print(*(i*i for i in range(5)), sep='\n')