Is the behaviour of Python#39;s list += iterable documented anywhere?(Python list += iterable 的行为是否记录在任何地方?)
问题描述
在 Python 中,list += x
似乎适用于任何可迭代的 x
:
在[6]中:l = []在 [7] 中:l += [1]在 [8] 中:l += (2, 3)在 [9] 中: l += xrange(5)在[10]中:l输出[10]:[1、2、3、0、1、2、3、4]
这种行为是否记录在任何地方?
为了与 list + x
进行对比,后者仅在 x
也是 list
时才有效.这在 文档.
来自 Guido van Rossum:p><块引用>
它的工作方式与 .extend()
相同,只是它也返回 self
.一世找不到解释这一点的文档.:-(
这里是取自 listobject.c
:
list_inplace_concat(PyListObject *self, PyObject *other){PyObject *结果;结果 = 列表扩展(自我,其他);如果(结果 == NULL)返回结果;Py_DECREF(结果);Py_INCREF(自我);返回(PyObject *)自我;}
我已提交错误报告以修复文档:http://bugs.python.org/issue16701
It would appear that in Python, list += x
works for any iterable x
:
In [6]: l = []
In [7]: l += [1]
In [8]: l += (2, 3)
In [9]: l += xrange(5)
In [10]: l
Out[10]: [1, 2, 3, 0, 1, 2, 3, 4]
Is this behaviour documented anywhere?
To contrast this with list + x
, the latter only works if x
is also a list
. This is spelled out in the documentation.
From Guido van Rossum:
It works the same way as
.extend()
except that it also returnsself
. I can't find docs explaining this. :-(
Here is the relevant source code taken from listobject.c
:
list_inplace_concat(PyListObject *self, PyObject *other)
{
PyObject *result;
result = listextend(self, other);
if (result == NULL)
return result;
Py_DECREF(result);
Py_INCREF(self);
return (PyObject *)self;
}
I've raised a bug report to have the documentation fixed: http://bugs.python.org/issue16701
这篇关于Python list += iterable 的行为是否记录在任何地方?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Python list += iterable 的行为是否记录在任何地方?
基础教程推荐
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 筛选NumPy数组 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01