【发布时间】:2021-10-15 13:14:41
【问题描述】:
在创建列表对象时,Python 似乎区分了[x] 和list(x),其中x 是一个可迭代对象。为什么会有这种差异?
>>> a = [dict(a=1)]
>>> a
[{'a': 1}]
>>> a = list(dict(a=1))
>>> a
['a']
虽然第一个表达式似乎按预期工作,但第二个表达式更像是这样迭代 dict:
>>> l = []
>>> for e in {'a': 1}:
... l.append(e)
>>> l
['a']
【问题讨论】:
-
[] == list()可能会给您一种印象,list()就像例如array()在 PHP 中——只是一种替代语法——但事实并非如此。它是一种在不带参数调用时给出一个空列表的类型,在使用一个参数调用时将一个可迭代对象转换为一个列表,并且不能使用多个参数调用。[x]不等于list(x),list(x, y, …)没有意义。