Python 合并列表 -- 保持相对顺序
我不太确定该怎么解决这个问题...
现在有:
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
这个工具来处理长度不一样的列表,并且可以设置一个填充值。