【问题标题】:Tuple comprehension is generating unexpected output [duplicate]元组理解正在产生意外的输出[重复]
【发布时间】:2021-09-21 12:34:57
【问题描述】:
x=(y for y in range(100) if y%2==0 and y%5==0)
print(x)

这给出了类似的输出 -

<generator object <genexpr> at 0x00000222B1C3CC80>

【问题讨论】:

  • python 中没有tuple comprehension 这样的东西。你所拥有的就是它告诉你的:generator 对象。如果需要,您可以对其进行迭代。
  • “元组理解”就是通过tuple 构造函数将这个生成器变成一个元组:tuple(y for y in ...)

标签: python tuples


【解决方案1】:

元组理解不是一回事。查看this SO post 了解原因。

改为这样做:

x = tuple(y for y in range(100) if y%2==0 and y%5==0)

这使用tuple() 构造函数从生成器对象创建一个元组。您可以使用此构造函数从迭代器或可迭代对象产生的元素中创建一个元组。所以,这段代码可以工作,因为生成器对象可以用作迭代器。

【讨论】:

    【解决方案2】:

    你可以这样做

    x=tuple(y for y in range(100) if y%2==0 and y%5==0)
    
    

    【讨论】:

      【解决方案3】:

      您可以使用tuple() 函数进行转换。

      x = (y for y in range(100) if y % 2 == 0 and y % 5 == 0)
      print(tuple(x))
      # (0, 10, 20, 30, 40, 50, 60, 70, 80, 90)
      

      【讨论】:

      • btw 在 python 中没有casting。您的示例是转换。
      猜你喜欢
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 2013-08-27
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      相关资源
      最近更新 更多