python3中[]和list()之间的区别

时间:2014-11-14 14:33:52

标签: list python-3.x

我认为[]和list()是创建列表的两种相同方式。但是如果你想要一个带字典键的列表,

var = [a_dict.keys()]
由于type(var)[dict_keys]

无效,正确的语法为:

var = list(a_dict.keys())

我找不到关于这种行为的好解释。你有吗?

2 个答案:

答案 0 :(得分:2)

a_dict.keys()dictionary view object,它返回一个对象,可以迭代该对象以生成a_dict的键。所以这一行:

[a_dict.keys()]

在python中说“我正在制作一个包含一个元素的列表”,而且一个元素是dict键迭代器。它是语法中的列表文字

现在这一行:

list(a_dict.keys())

是对list内置函数的调用。此函数list尝试迭代参数并生成列表。它是语法中的函数调用

等效列表文字(实际上是列表理解)将改为:

[key for key in a_dict.keys()]

希望这有帮助

答案 1 :(得分:1)

[a_dict.keys()]

这个将一个元素放在列表中。就像你要写[1]。在这种情况下,一个元素将成为一个列表。

list(a_dict.keys())

构造函数接受一个序列,并将序列的所有元素添加到容器中。