在本文中,我们将通过示例展示如何编写一个Python程序来合并两个列表中的元素。合并两个列表有多种选择,包括 + 运算符(连接)、extend 函数、* 运算符、for 循环、while 循环、列表推导式和 chain 函数。
Python 程序使用 + 或 concat 来合并两个列表
在下面的程序中,我们声明了两个整数列表,每个列表包含三个元素。在此编程语言中,+ 运算符将连接或合并两个列表并生成一个新列表。
a = [10, 20, 30]
b = [40, 50, 60]
c = a + b
print(c)
[10, 20, 30, 40, 50, 60]
使用列表 extend 方法
内置的 extend 方法将通过添加或合并另一个列表来扩展或展开现有列表。此 Python 程序使用 extend() 函数合并两个整数列表。
a = [10, 20, 30]
b = [40, 50, 60]
a.extend(b)
print(a)
[10, 20, 30, 40, 50, 60]
使用 * 运算符
在 Python 编程语言中,* 运算符将解包列表项。因此,我们对两个列表都使用了 * 运算符来解包它们,然后将它们转换为一个列表。为了更好地理解它们,我们打印了解包后的 a 和 b。
a = ["India", "USA", "China"]
b = ["UK", "Japan", "France", "Germany"]
print(*a)
print(*b)
c = [*a, *b]
print(c)
India USA China
UK Japan France Germany
['India', 'USA', 'China', 'UK', 'Japan', 'France', 'Germany']
使用 itertools chain 方法
它是最快的方法,最适合合并大型列表。在此程序中,我们导入 itertools 模块并使用 chain() 函数来合并两个列表。itertools.chain(a, b) 行将创建一个迭代器(<itertools.chain object>),其中包含 a 和 b 的组合项。接下来,list() 函数将 chain 对象转换为列表。
import itertools
a = [10, 20, 30]
b = [40, 50, 60, 70]
c = list(itertools.chain(a, b))
print(c)
[10, 20, 30, 40, 50, 60, 70]
Python 程序使用 for 循环合并两个列表
除了上述方法之外,您还可以使用 for 循环来合并两个列表。在下面的程序中,我们声明了两个字符串列表,for 循环将迭代列表(b)的元素。在循环中,我们使用 append() 函数将每个值添加到列表 a 的末尾。
a = ["India", "USA", "China"]
b = ["UK", "Japan", "France", "Germany"]
for val in b:
a.append(val)
print(a)
['India', 'USA', 'China', 'UK', 'Japan', 'France', 'Germany']
下面的程序将声明一个新列表,而不是将列表 b 追加到列表 a。接下来,我们使用了两个 for 循环,一个接一个地遍历列表 a 和 b。append() 函数会将这些项添加到 c。
a = ["India", "USA", "China"]
b = ["UK", "Japan", "France", "Germany"]
c = []
for val in a:
c.append(val)
for val in b:
c.append(val)
print(c)

嵌套 for 循环
我们调整了上述合并两个列表的示例,并使用了嵌套的 for 循环而不是多个循环。第一个 for 循环一次遍历多个列表,内部循环则遍历组合后的列表。
a = [10, 20, 30]
b = [40, 50, 60, 70]
c = []
for val in (a, b):
for n in val:
c.append(n)
print(c)
[10, 20, 30, 40, 50, 60, 70]
使用 while 循环
与 For 循环不同,此程序使用 while 循环和 append() 函数来合并两个列表。
a = [10, 20, 30]
b = [40, 50, 60]
i = 0
while i < len(b):
a.append(b[i])
i += 1
print(a)
[10, 20, 30, 40, 50, 60]
使用列表推导式
在使用列表推导式合并两个列表时,我们可以使用多种方法。第一种方法是使用列表推导式遍历每个列表,并使用 + 运算符将它们合并。
a = [10, 20, 30]
b = [40, 50, 60]
c = [val for val in a] + [val for val in b]
print(c)
[10, 20, 30, 40, 50, 60]
在下面的程序中,我们调整了代码以获得更好的性能和可读性。这里,[num for num in (a, b)] 返回 [[10, 20, 30], [40, 50, 60, 70]]。因此,我们使用了另一个 for 循环。
a = [10, 20, 30]
b = [40, 50, 60, 70]
c = [val for num in (a, b) for val in num]
print(c)
print([num for num in (a, b)])
[10, 20, 30, 40, 50, 60, 70]
[[10, 20, 30], [40, 50, 60, 70]]
Python 程序使用 set() 合并两个列表
如果您希望在合并两个列表后获得唯一的项目,请使用 set() 函数。当您处理重复项并查找两个列表中的唯一项时,请使用 set 方法和 + 运算符。由于它返回一个 set,我们必须使用 list() 函数将其转换回来。
a = [1, 2, 3, 4, 5, 7]
b = [4, 6, 7, 9]
c = a + b
print(c)
d = list(set(a + b))
print(d)
[1, 2, 3, 4, 5, 7, 4, 6, 7, 9]
[1, 2, 3, 4, 5, 6, 7, 9]