Python

时间:2019-03-07 13:25:43

标签: python pandas list structure

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

如果您在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返回整个虹膜数据框。

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

我尝试在Python foruns中搜索此问题,但找不到我可以理解或满意的答案。

最诚挚的问候,

古斯塔沃

1 个答案:

答案 0 :(得分:3)

由于list built-in是一个函数,因此会创建一个新列表。如您的示例所示,当此函数接收到iterable作为第一个参数时,列表将包含可迭代对象的所有成员。

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

因此,调用list(iterable)会得到一个包含可迭代元素的列表,而[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