将可迭代的所有元素添加到列表

2022-01-20 00:00:00 python list tuples

问题描述

是否有更简洁的方法来执行以下操作?

Is there a more concise way of doing the following?

t = (1,2,3)
t2 = (4,5)

l.addAll(t)
l.addAll(t2)
print l # [1,2,3,4,5]

这是我迄今为止尝试过的:我宁愿避免在参数中传入列表.

This is what I have tried so far: I would prefer to avoid passing in the list in the parameters.

def t_add(t,stuff):
    for x in t:
        stuff.append(x)


解决方案

使用 list.extend(),而不是 list.append() 从一个可迭代到列表:

Use list.extend(), not list.append() to add all items from an iterable to a list:

l.extend(t)
l.extend(t2)

l.extend(t + t2)

甚至:

l += t + t2

其中 list.__iadd__(就地添加)在底层实现为 list.extend().

where list.__iadd__ (in-place add) is implemented as list.extend() under the hood.

演示:

>>> l = []
>>> t = (1,2,3)
>>> t2 = (4,5)
>>> l += t + t2
>>> l
[1, 2, 3, 4, 5]

但是,如果您只想创建一个 t + t2 列表,那么 list(t + t2) 将是到达那里的最短路径.

If, however, you just wanted to create a list of t + t2, then list(t + t2) would be the shortest path to get there.

相关文章