首页 > 解决方案 > Python中“[]”和“list”的区别

问题描述

这个问题是“概念性的”,而不是特定的编程问题。

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

[4,3,2,1]

Python 会告诉你这是一个列表,如下所示:

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

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

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

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

这将为您提供列名称作为列表。

现在,如果我尝试:

[iris]

Python 返回整个 iris 数据帧。

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

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

最好的祝福,

古斯塔沃

标签: pythonpandasliststructure

解决方案


因为内置列表是一个函数,它会创建一个新列表。当此函数像您的示例一样接收可迭代作为第一个参数时,列表将包含可迭代的所有成员。

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

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

例子:

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

有关创建列表的不同方法的更多信息,请查看pythons 列表类的文档


推荐阅读