Python - 为什么我不能在print函数中使用生成器?

时间:2018-02-08 17:54:04

标签: python python-3.x generator

我的代码:

a=[3,3,3,3,3,3,45,4,5,2,2,4,3,3,3,3]
print(x for x in set(a))

输出:

<generator object <genexpr> at 0xb62dccec>

为什么呢?如何使用一行打印set

3 个答案:

答案 0 :(得分:3)

你不需要发电机。只需按原样打印设置:

print(*(something(x) for x in set(a)), sep=', ')  # unpacks generator, bare

如果您想对每个项目执行某些操作

print({something(x) for x in set(a)})  # creates new set, surrounded by {}

甚至

print([something(x) for x in set(a)])  # creates new list, surrounded by []

{{1}}

答案 1 :(得分:2)

你可以print(set(a)) 这样:

print

您当前代码无法正常工作的原因是因为time.Sleep函数不会消耗生成器对象。

答案 2 :(得分:2)

打印只打印对象(它是一个生成器),它不会消耗它的数据。 您可以将其转换为列表,从而打印其值:

a = [3,3,3,3,3,3,45,4,5,2,2,4,3,3,3,3]
print([x for x in set(a)])
# here^-----------------^