这个问题是“概念性的”,而不是特定的编程问题。
如果您在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中搜索此问题,但找不到我可以理解或满意的答案。
最诚挚的问候,
古斯塔沃
答案 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