【问题标题】:Printing from 1 to 99 using a print and for loop function使用 print 和 for 循环函数从 1 打印到 99
【发布时间】:2017-12-16 00:09:44
【问题描述】:

我在 Python 3.6 的 IDLE 中尝试了以下操作

print(value for value in range(1,100))

在 IDLE 中产生一条消息,上面写着

<generator object <genexpr> at 0x101b73a40>

我很困惑这意味着什么。我做错了什么吗?

【问题讨论】:

  • 或者,只需使用list(..) 包装您的声明即可。 print(list(value for value in range(1,100)))。我应该提到香草列表推导实际上比调用 list(..) 更快。
  • 也许你的意思是(print value) for value in range(1, 100)

标签: python python-3.x for-loop


【解决方案1】:

您只想在这里使用列表推导,但您没有使用列表。
简单来说应该是

for i in range(1,100):
    print(i)

如果你还想使用列表推导式,那就是这样

[print(x) for x in range(1,100)]

这将给出类似

的输出
1
2
3
....
99
100
[None, None, None, ...97 times more]

【讨论】:

    【解决方案2】:

    (value for value in range(1,100)) 产生generator 对象,如果要打印list,只需将其包裹在[]

    print([value for value in range(1,100)])
    

    或者你可以简单地

    print(list(range(1,100)))
    

    你可以阅读HERE是什么生成器

    返回生成器迭代器的函数。它看起来像一个普通函数,只是它包含用于生成一系列可在 for 循环中使用的值的 yield 表达式,或者可以使用 next() 函数一次检索一个值。

    通常指的是生成器函数,但在某些情况下可能指的是生成器迭代器。在预期含义不明确的情况下,使用完整的术语可以避免歧义。

    【讨论】:

      【解决方案3】:
      print([value for value in range(1,100)])
      

      您应该将其包含在列表 [] 中以生成值

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-20
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 2015-11-01
        • 2023-01-29
        • 1970-01-01
        相关资源
        最近更新 更多