【问题标题】:Python 3.2 idle : range function - print or list?Python 3.2 空闲:范围函数 - 打印或列表?
【发布时间】:2011-07-20 20:58:54
【问题描述】:

我知道这样做是错误的,但我正在使用 python 3,但正在使用 python 2 书学习它。

它说,

>>>range(2,7)

会显示

[2,3,4,5,6]

但我知道它不会显示上面的输出,这是我想的。所以我尝试了:

>>>>print(range(2,7))

和ta-da-它显示如下:

range(2,7)

看起来这是从 P2 到 P3 的变化之一,所以我尝试了:

list(range(2,7))

这个在 IDLE 上工作正常,但在记事本上不适合长编码。所以最后我尝试了:

print(list(range(2,7)))

它显示的内容与我的意图相似……我做得对吗?这是唯一的写法吗?

【问题讨论】:

  • 这个问题也适用于 zip。你需要list( zip(stuff) )

标签: python list printing range


【解决方案1】:

在您的 IDLE 情况下,您正在 IDLE 的 PyShell 窗口中运行代码。这是运行交互式解释器。在交互模式下,Python 会立即解释您输入的每一行,并通过评估您输入的语句以及写入标准输出或标准错误的任何内容来显示返回的值。对于 Python 2,range() 返回一个列表,正如您所发现的,在 Python 3 中,它返回一个可迭代的 range() 对象,您可以使用它来创建列表对象或在迭代上下文中的其他地方使用。 Python 3 range() 类似于 Python 2 的 xrange()

当您在记事本等编辑器中编辑文件时,您正在编写一个脚本文件,当您在 Python 解释器中运行该文件时,整个脚本被解释并作为一个单元运行,即使它只有一行长.在屏幕上,您只能看到写入标准输出(即“print()”)或标准错误(即错误回溯)的内容;您不会像在交互模式下那样看到每个语句的评估结果。因此,在您的示例中,从脚本文件运行时,如果您不打印评估某些内容的结果,您将看不到它。

Python 教程稍微谈到了这个here

【讨论】:

    【解决方案2】:

    如果您的唯一目标是取回列表表示,那么您所做的就是正确的。 Python 3.0 现在将range 视为返回一个迭代器(xrange 曾经这样做)

    【讨论】:

      猜你喜欢
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 2021-07-21
      • 2020-06-14
      • 2021-03-29
      相关资源
      最近更新 更多