Эта программа хорошо работает, печатая числа от 2000 до 3200, которые делятся на 7, а не на 5, разделенные запятой.
print(*(i for i in range(2000, 3201) if i%7 == 0 and i%5 != 0), sep = ",")
Я могу понять (i для i в диапазоне (2000, 3201), если i%7 == 0 и i%5 != 0) создает объект генератора, и я могу пропустить его через цикл for. Но этот символ «*» делает то же самое. Это как понять?
«*» — оператор звездочки.
В python, если мы поместим звездочку перед списком/кортежем или любым итерируемым объектом, мы можем распаковка итерируемого.
пример:
print(*[1, 2, 3, 4], sep = ", ")
выход:
1, 2, 3, 4
В вашем случае итерация — это генератор (i for i in range(2000, 3201) if i%7 == 0 and i%5 != 0)
Что происходит, когда вы удаляете его?