微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python列表+ =可迭代的行为是否记录在任何地方?

如何解决Python列表+ =可迭代的行为是否记录在任何地方?

Guido van Rossum出发:

.extend()除了也返回外,其工作方式与之相同self。我找不到说明此问题的文档。:-(

以下是相关的源代码,摘自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;
}

我提出了一个错误报告来修复此文档:http ://bugs.python.org/issue16701

解决方法

看来在Python中,它list += x适用于任何可迭代的对象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,1,4]

此行为记录在任何地方吗?

与此形成对比的是list + x,后者仅当x也是有效时才起作用list。这在文档中有详细说明

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。