作为Python的初学者,我试图在IDLE终端中测试函数range()。我在终端上写了下面的代码,我希望看到这样的结果:
range(10)==>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
但不幸的是,我没有得到预期的结果我尝试过的Python代码:
range(10) print(range(10))
shell的结果:
range(10)
5ktev3wc1#
在python 3中,range()返回一个生成器,这就是为什么它显示的是对象而不是值:
range()
>>> print(range(10)) range(0, 10)
如果您需要一个列表,则需要在打印之前将其转换为列表:
>>> print(list(range(10))) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
生成器一次只创建一个值以保存内存。您可以阅读here,其中包括适合您的测试用例的示例。
mmvthczy2#
C:\Documents and Settings\U009071\Desktop>python Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> >>> print(list(range(10))) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> >>> for i in range(10): ... print(i) ... 0 1 2 3 4 5 6 7 8 9 >>>
>>> print(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> print range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a = range(10) >>> print(a) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
不知道你的Python版本,但我的工作正常。请尝试指定range(0,10)以确保安全。
range(0,10)
2条答案
按热度按时间5ktev3wc1#
在python 3中,
range()
返回一个生成器,这就是为什么它显示的是对象而不是值:如果您需要一个列表,则需要在打印之前将其转换为列表:
生成器一次只创建一个值以保存内存。您可以阅读here,其中包括适合您的测试用例的示例。
mmvthczy2#
跨版本解决方案
Python2:
不知道你的Python版本,但我的工作正常。请尝试指定
range(0,10)
以确保安全。