传递None给Python的list构造函数是TypeError:
>>> l = list(None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable
Run Code Online (Sandbox Code Playgroud)
但使用括号来实例化a list很好; 使用None内置函数也很好:
>>> l = [None]
>>> l.append(None)
>>> l
[None, None]
Run Code Online (Sandbox Code Playgroud)
我的理解是,list()并且[]是创造新的等效方式list.我错过了什么?
jon*_*rpe 21
他们并不等同.list()尝试迭代它的参数,使每个对象成为一个单独的列表项,而列表文字[]恰好采用它给出的内容.相比:
>>> list("foo")
['f', 'o', 'o']
>>> ["foo"]
['foo']
Run Code Online (Sandbox Code Playgroud)
你不能迭代None,因此错误.您将获得与任何非可迭代参数相同的信息:
>>> list(1)
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
list(1)
TypeError: 'int' object is not iterable
Run Code Online (Sandbox Code Playgroud)
为了获得等效的a = [None]使用list(),你必须将它传递给一个带有单个对象的迭代,例如
a = list([None])
Run Code Online (Sandbox Code Playgroud)
虽然这会创建列表文字,然后复制它,所以在这个简单的例子中并不是非常有用!
| 归档时间: |
|
| 查看次数: |
1202 次 |
| 最近记录: |