【问题标题】:Python - Why can't I use generators inside the print function?Python - 为什么我不能在打印函数中使用生成器?
【发布时间】:2018-02-08 17:54:04
【问题描述】:

我的代码:

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

【问题讨论】:

  • 打印set(a)?或将其包装在 print ([x for x in set(a)]) 之类的列表中

标签: python python-3.x generator


【解决方案1】:

您不需要生成器。只需按原样打印集合:

print(set(a))

如果你想对每个项目做一些事情,请使用

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 []

【讨论】:

  • 谢谢。我实际上想要第二行,用逗号打印它,使用分隔符,而不是.join
  • 然后使用print(*set(a), sep=", ")
【解决方案2】:

你可以这样print它:

print(set(a))

您当前的代码不起作用的原因是print 函数不使用生成器对象。

【讨论】:

    【解决方案3】:

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

    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^-----------------^
    

    【讨论】:

      猜你喜欢
      • 2017-06-17
      • 2021-01-17
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多