我试图弄清楚如何在Python中将多个值附加到列表中。我知道有一些方法可以做到这一点,例如手动输入值,或将追加操作放入for循环,或追加和扩展函数。

然而,我想知道是否有一种更简洁的方式来做到这一点?也许是某个包或函数?


当前回答

您可以使用序列方法列表。Extend将列表扩展为来自任何类型的可迭代对象的多个值,可以是另一个列表或任何其他提供值序列的东西。

>>> lst = [1, 2]
>>> lst.append(3)
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]

>>> lst.extend([5, 6, 7])
>>> lst.extend((8, 9, 10))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> lst.extend(range(11, 14))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

因此,可以使用list.append()来添加单个值,使用list.extend()来添加多个值。

其他回答

除了append函数,如果你所说的“多个值”指的是另一个列表,你可以像这样简单地将它们连接起来。

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a + b
[1, 2, 3, 4, 5, 6]

如果你看一下官方文档,你会在下面看到append, extend。这就是你要找的。

还有itertools。链,如果你更感兴趣的是有效的迭代,而不是最终得到一个完全填充的数据结构。

您可以使用序列方法列表。Extend将列表扩展为来自任何类型的可迭代对象的多个值,可以是另一个列表或任何其他提供值序列的东西。

>>> lst = [1, 2]
>>> lst.append(3)
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]

>>> lst.extend([5, 6, 7])
>>> lst.extend((8, 9, 10))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> lst.extend(range(11, 14))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

因此,可以使用list.append()来添加单个值,使用list.extend()来添加多个值。

如果项的数量保存在一个变量n中,您可以使用列表推导式和加号进行列表展开。

lst = ['A', 'B']
n = 1
new_lst = lst + ['flag'+str(x) for x in range(n)]
print(my_lst)

>>> ['A','B','flag0','flag1']

解决这类问题的一种方法是——

在这里,我们通过创建变量new_values将一个列表插入到现有列表中。

注意,我们在第二个索引中插入值,即[2]

a = [1, 2, 7, 8]

new_values = [3, 4, 5, 6]

a.insert(2, new_values)

print(a)

但是这里insert()方法将把值作为列表添加。

这里有另一种方式来做同样的事情,但这一次,我们实际上将值插入到项之间。

a = [1, 2, 7, 8]

a[2:2] = [3,4,5,6]

print(a)