我试图弄清楚如何在Python中将多个值追加到列表中,我知道有几种方法可以做到这一点,比如手动输入值,或者将追加操作放在for循环中,或者append和extend函数中。然而,我想知道是否有更整洁的方法这样做?也许是某个包或功能?
for
append
extend
g6ll5ycj1#
您可以使用序列方法list.extend将列表扩展为任何类型的可迭代对象的多个值,无论是另一个列表还是提供值序列的任何其他对象。
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()附加 * 多个 * 值。
list.append()
list.extend()
r6hnlfcb2#
除了append函数之外,如果“多个值”指的是另一个列表,则可以简单地将它们连接起来,如下所示。
>>> a = [1,2,3] >>> b = [4,5,6] >>> a + b [1, 2, 3, 4, 5, 6]
iq0todco3#
如果你看一下官方文档,你会在append的正下方看到extend,这就是你要找的。如果您对高效的迭代比最终得到一个完全填充的数据结构更感兴趣,那么还有itertools.chain。
itertools.chain
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']
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)
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或解包或+操作符创建了一个新列表。
+
6条答案
按热度按时间g6ll5ycj1#
您可以使用序列方法
list.extend
将列表扩展为任何类型的可迭代对象的多个值,无论是另一个列表还是提供值序列的任何其他对象。因此,您可以使用
list.append()
附加 * 一个 * 值,使用list.extend()
附加 * 多个 * 值。r6hnlfcb2#
除了
append
函数之外,如果“多个值”指的是另一个列表,则可以简单地将它们连接起来,如下所示。iq0todco3#
如果你看一下官方文档,你会在
append
的正下方看到extend
,这就是你要找的。如果您对高效的迭代比最终得到一个完全填充的数据结构更感兴趣,那么还有
itertools.chain
。jdzmm42g4#
如果项目的数量保存在一个变量中,比如n。你可以使用列表解析和加号来扩展列表。
fwzugrvs5#
解决这类问题的一种方法是-
这里我们通过创建变量new_values将一个列表插入到现有列表中。
请注意,我们将在 second index 中插入值,即a[2]
但是这里的insert()方法将把值作为一个列表追加。
这里有另一种方法来做同样的事情,但是这一次,我们实际上将在项之间插入值。
vyu0f0g16#
另一个解决方案是将两个列表都解包到一个新列表中,并将其分配回原始列表的副本:
举个例子:
或者像Saumya Prasad's answer那样分配给一个空片(但是在列表的末尾):
值得注意的是,
list.extend
和对空切片的切片赋值都在原处修改了列表,而itertools.chain
或解包或+
操作符创建了一个新列表。