Изменения списка на числа в Python 3
Написал программу для выполнения задачи. Код написал правильно, но в условии требуют вывод данных через числа ,а не через строки. Подскажите пожалуйста как в конце кода преобразовать переменную d в числа. Вот код:
a.sort()
d = []
b = 0
c = 1
for i in a[:-1]:
if a[b] == a[c] and a[c] not in d:
d += a[c]
b += 1
c += 1
При попытке преобразовать через:
print(int(f) for f in d)
Выдает ошибку:
<generator object <genexpr> at 0x000001DE2C2947C8>#что это значит?
Ответы (2 шт):
Решается ваш вопрос так - добавлением квадратных скобок:
print([int(f) for f in d])
Пояснение:
Функция print печатает то, что ей передают на вход. В вашем случае такая форма записи:
print(int(f) for f in d)
Означает, что вы передаёте на вход функции print генератор, получившийся в результате работы списочного генератора. Этот списочный генератор можно записать ещё так:
(int(f) for f in d)
Функция print вам и сообщает, что получила на вход generator object.
А вот если передать функции print списочное сокращение (результатом работы которого которого является список), как в моём варианте кода, то print знает, что с делать со списком - он успешно напечатает все его элементы.