Python 中的“[]”和 "list" 的区别

Difference between "[]" and "list" in Python

这个问题 "conceptual" 而不是特定的编程问题。

如果在Python中询问这个对象的类型:

[4,3,2,1]

Python 会告诉你这是一个列表,可以通过以下方式看到:

type([4,2,3])
Out[12]: list

一般来说,括号似乎对一组对象有这种效果,只要你用括号把它们包围起来,它们就变成了一个列表。

现在考虑一个 pandas 数据框。众所周知,要了解您应该做的列的名称,例如:

list(iris)
Out[13]: ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species']

这将为您提供列名列表。

现在如果我尝试:

[iris]

Python returns 整个虹膜数据帧。

这是为什么?为什么有时括号的行为就像是从一组对象中创建一个列表,而有时却不是(如本例的第二种情况)?

我尝试在 Python 论坛上搜索这个问题,但找不到我能理解或满意的答案。

此致,

古斯塔沃,

因为 list built-in is a function, that creates a new list. When this function receives an iterable 作为您示例中的第一个参数,列表将包含可迭代对象的所有成员。

使用方括号也创建一个新列表,但是方括号之间的元素是一个项目。

因此调用 list(iterable) 会产生一个包含可迭代对象的每个元素的列表,而 [iterable] 会产生一个包含整个可迭代对象本身的列表。

示例:

>>> iterable = range(10)
>>> list(iterable)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [iterable]
[range(0, 10)]

有关创建列表的不同方法的详细信息,请查看 the documentation for pythons list class