python - 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 论坛上搜索这个问题,但找不到我可以理解或满意的答案。
最好的祝福,
古斯塔沃
解决方案
因为内置列表是一个函数,它会创建一个新列表。当此函数像您的示例一样接收可迭代作为第一个参数时,列表将包含可迭代的所有成员。
使用方括号也会创建一个新列表,但方括号之间的元素是一个项目。
因此,调用list(iterable)
会产生一个包含可迭代对象的每个元素的列表,而[iterable]
会产生一个包含整个可迭代对象本身的列表。
例子:
>>> iterable = range(10)
>>> list(iterable)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [iterable]
[range(0, 10)]
有关创建列表的不同方法的更多信息,请查看pythons 列表类的文档
推荐阅读
- ios - iOS Safari 显示“错误”
- javascript - 在javascript中使用延时(具体情况)
- python - 如何在这里创建一个 for 循环?
- sql - 根据案例陈述从分组依据中选择
- ssis - SSIS 组件从数据流中的所有 (n)varchar 字段中删除换行符
- caching - Redis:基于依赖项的缓存项失效?
- asp.net-core - ASP.NET Core - 无法设置和读取 cookie
- kotlin - 如何在 ktor 前端更改变量或文本
- python-3.x - 在 readthedocs.org 上构建 Sphinx 文档时将所有警告视为错误
- c++ - 如何从 shell 脚本中获取 echo 语句以及执行状态到 c++ 程序中