我使用python-3.2.3 64bit,我看到一些奇怪的行为.
例如,使用解释器时:输入
>>> range(10)
Run Code Online (Sandbox Code Playgroud)
结果输出
range(0, 10)
Run Code Online (Sandbox Code Playgroud)
什么时候打印
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
Simmilary输入
>>> l = range(10)
>>> f = filter( lambda x: x<2, l)
>>> f
Run Code Online (Sandbox Code Playgroud)
导致输出
<filter object at 0x00000000033481D0>
Run Code Online (Sandbox Code Playgroud)
但它应该是
[0, 1]
Run Code Online (Sandbox Code Playgroud)
显然,我无法对该对象做任何事情:
>>>> len(f)
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
len(f)
TypeError: object of type 'filter' has no len()
Run Code Online (Sandbox Code Playgroud)
这里有什么不对?
Chr*_*tts 18
没有错误.range()是Py3.x一次生成项目1,就像生成器不同,它在Py2.x中的行为就是生成一个列表然后然后返回给你.总结您的来电range(10)中通话list(),你就会得到你所期望的.
| 归档时间: |
|
| 查看次数: |
3015 次 |
| 最近记录: |