关于list.extend(元组)

时间:2016-04-26 01:44:41

标签: python python-2.7

代码在这里:

>>> a = ['xyz']
>>> b = (5,)
>>> a.extend(b)
>>> a
['xyz', 5]

我检查了很多信息,但他们都告诉我:

list.extend(seq)
seq -- This is the list of elements

我想知道为什么列表可以扩展一个元组 THX。

3 个答案:

答案 0 :(得分:1)

如果查看docstring的{​​{1}},您会看到它可以被任何迭代扩展:

extend

这意味着您不仅限于""" L.extend(iterable) -> None -- extend list by appending elements from the iterable """ list s,还包括tuple s,string和其他迭代:

set

打印:

for iterable in ('ab', set([1, 2, 3]), {1:2, 3:4}, (0, 1)):
    l = [1]
    l.extend(iterable)
    print(l)

答案 1 :(得分:-1)

列表方法extend可以从任何可迭代扩展列表实例,并且元组是可迭代的。所以它与你所说的相反,元组扩展了列表,而不是相反。

答案 2 :(得分:-1)

这正是它所说的,这就是你所做的:取一个list并按顺序扩展它。它不必完全是list类型。您发现的资源在这一点上可以更清楚。

official documentation说明如下:

  

下表中的操作是在可变序列类型上定义的。提供collections.abc.MutableSequence ABC是为了更容易在自定义序列类型上正确实现这些操作。

     

在表中 s 是可变序列类型的实例, t 是任何可迭代对象, x 是一个任意对象 s 强加的任何类型和值限制(例如,bytearray只接受符合值限制0 <= x <= 255)的整数。

...

s.extend(t) or s += t
     

使用 t 的内容扩展 s (大部分与s[len(s):len(s)] = t相同)

因此,您示例中的a可以是任何可变序列类型,例如list,而b可以是任何序列,例如tuple