使用 '*" 循环生成器

Using '*" to loop through a Generator

这个程序可以很好地打印 2000 到 3200 之间的数字,这些数字可以被 7 整除而不是被 5 整除,用逗号分隔

print(*(i for i in range(2000, 3201) if i%7 == 0 and i%5 != 0), sep=",")

我可以理解(i for i in range(2000, 3201) if i%7 == 0 and i%5 != 0)创建一个生成器对象,我可以通过 for 循环循环它。但是这个'*'符号的作用是一样的。这个怎么理解?

“*”是星号运算符。
在 python 中,如果我们在 list/tuple 或任何可迭代对象之前放置一个星号,我们就可以 解压可迭代对象 。 示例:

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)