如何在Python中向列表追加多个值

uwopmtnx  于 2023-02-28  发布在  Python
关注(0)|答案(6)|浏览(241)

我试图弄清楚如何在Python中将多个值追加到列表中,我知道有几种方法可以做到这一点,比如手动输入值,或者将追加操作放在for循环中,或者appendextend函数中。
然而,我想知道是否有更整洁的方法这样做?也许是某个包或功能?

g6ll5ycj

g6ll5ycj1#

您可以使用序列方法list.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()附加 * 多个 * 值。

r6hnlfcb

r6hnlfcb2#

除了append函数之外,如果“多个值”指的是另一个列表,则可以简单地将它们连接起来,如下所示。

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

iq0todco3#

如果你看一下官方文档,你会在append的正下方看到extend,这就是你要找的。
如果您对高效的迭代比最终得到一个完全填充的数据结构更感兴趣,那么还有itertools.chain

jdzmm42g

jdzmm42g4#

如果项目的数量保存在一个变量中,比如n。你可以使用列表解析和加号来扩展列表。

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

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

fwzugrvs5#

解决这类问题的一种方法是-
这里我们通过创建变量new_values将一个列表插入到现有列表中。
请注意,我们将在 second index 中插入值,即a[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)
vyu0f0g1

vyu0f0g16#

另一个解决方案是将两个列表都解包到一个新列表中,并将其分配回原始列表的副本:

my_list[:] = [*my_list, *new_items]

举个例子:

my_list = [1, 2]
new_items = [3, 4, 5]

my_list[:] = [*my_list, *new_items]
my_list                                # [1, 2, 3, 4, 5]

或者像Saumya Prasad's answer那样分配给一个空片(但是在列表的末尾):

length = len(my_list)
my_list[length:length] = new_items
my_list                                # [1, 2, 3, 4, 5]

值得注意的是,list.extend和对空切片的切片赋值都在原处修改了列表,而itertools.chain或解包或+操作符创建了一个新列表。

相关问题