将可迭代的所有元素添加到列表
问题描述
是否有更简洁的方法来执行以下操作?
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.
相关文章