我正在尝试找出如何在Python中将多个值添加到列表的方法。 我知道有几种方法可以实现,例如手动输入值,或将追加操作放入for
循环中,或使用append
和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()
来添加多个值。append()
相比,extend()
不会保留您添加的元素的结构。以使用append()
的示例为例,您将得到[1, 2, 3, 4, [5, 6, 7], (8, 9, 10), range(11, 14)]
。 Python 3 - Yohan Obadia除了append
函数外,如果你所说的"多个值"是指另一个列表,你可以像这样简单地将它们连接起来。
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a + b
[1, 2, 3, 4, 5, 6]
a = [1, 2, 3]
,你也可以使用 a += [4, 5, 6]
来添加多个元素。这将把 a
设置为 [1, 2, 3, 4, 5, 6]
。这不会创建一个新的列表;每个元素都被附加到 a
上。(通过 a = [1, 2, 3]; b = a; a += [4, 5, 6]
进行测试,你会发现 a
和 b
仍然是相同的。) - FWDekkermy_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的回答中所示,将其分配给一个空切片(但在列表末尾):
length = len(my_list)
my_list[length:length] = new_items
my_list # [1, 2, 3, 4, 5]
list.extend
和对空切片进行切片赋值都会就地修改列表,而itertools.chain
或解包或+
运算符则会创建一个新列表。您可以通过以下方式解决这种类型的问题 -
在此,我们通过创建变量new_values将列表插入到现有列表中。
请注意,我们将值插入到第二个索引中,即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)
lst = ['A', 'B']
n = 1
new_lst = lst + ['flag'+str(x) for x in range(n)]
print(my_lst)
>>> ['A','B','flag0','flag1']