Python 合并列表 -- 保持相对顺序

4 投票
5 回答
2190 浏览
提问于 2025-04-16 16:35

我不太确定该怎么解决这个问题...

现在有:

L1 = [1,2,3]
L2 = [a,b,c]

想要得到:

[1,a,2,b,3,c]

5 个回答

0

长方法:

假设这两个列表的长度是一样的:

merged = []
for x in range(len(L1)):
    merged.append(L1[x])
    merged.append(L2[x])

如果长度不一样,先分别测量两个列表的长度,然后比较一下,保留较长的那个列表的长度。接着,运行一个循环,循环的次数是较长列表的长度。在这个循环里,加入一个判断语句,当循环的计数器x超过了较短列表的最后一个索引时,只把较长列表的值添加进去。这样做可能需要你在比较后,把每个列表分别存储在两个不同的变量里,比如叫“smaller”(较小的)和“larger”(较大的)。

短方法:

把两个列表“拉链”合并在一起。

6

把列表压缩成一个,然后把结果展开:

Z = zip(L1, L2)
print [x for item in Z for x in item]
13
import itertools

L1 = [1,2,3]
L2 = ['a','b','c']
list(itertools.chain.from_iterable(itertools.izip(L1, L2)))

你可以使用 izip_longest 这个工具来处理长度不一样的列表,并且可以设置一个填充值。

撰写回答