#python #python-3.x
#python #python-3.x
Вопрос:
Я хочу сгенерировать числа от 1 до 99 с диапазоном (100), но каждый вывод представляет собой строку. Пример: (‘1′,’2′,’3’,…).
Я уже пробовал это решение, но получаю эту ошибку.
NUMBERS = (str(i) for i in range(100))
Error: [<generator object <genexpr> at 0x02229CA0>]
Спасибо
Комментарии:
1.
NUMBERS = tuple(str(i) for i in range(100))
2. Это не сообщение об ошибке. Это то, как выглядит генератор при распечатке.
3. @Julien — этот код начинается с 0 вместо 1
Ответ №1:
Понимание, заключенное в круглые скобки, дает отложенный генератор. Используйте квадратные скобки, если вам нужен список:
numbers = [str(i) for i in range(100)]
В качестве альтернативы превратите отложенный генератор в кортеж:
numbers = tuple(str(i) for i in range(100))
Комментарии:
1. Или, если они просто хотят перебрать их для печати,
for x in NUMBERS:
. Или вы можете распаковать выражение генератора в качествеprint(*NUMBERS)
(неявно печатается с разделением пробелом).
Ответ №2:
Если вы хотите, чтобы результаты были в виде кортежа, вы должны написать NUMBER = tuple(...)
. (В качестве альтернативы вы можете использовать list(...for...)
или [...for...]
для создания списка.)
Без tuple
, (str(i) for i in range(100))
одиночество — это выражение генератора.
Ответ №3:
Вы можете попробовать использовать range(start, stop, step)
функцию. Это и есть результат —
>>> nums = tuple(str(i) for i in range(1,100,1))
>>> nums
('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99')