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
这个问题 "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