python 的列表有序合并

a = [1, 2, 3]
b = ['a', 'b', 'c']
c = ['一', '二', '三', ]
三个列表 a,b,c 怎么合并成下面 data 这种列表形式?
data =['1 a 一', '2 b 二', '3 c 三']

可以使用 python 内置的 zip() 函数来实现。zip() 函数能够将多个列表的元素按顺序配对,并返回一个迭代器。

a = [1, 2, 3]
b = ['a', 'b', 'c']
c = ['一', '二', '三']

data = [i + ' ' + j + ' ' + k for i, j, k in zip(a, b, c)]
print(data)

如果长度不一致可以使用itertools.zip_longest,然后再使用filter过滤掉填充值。

from itertools import zip_longest

a = [1, 2, 3]
b = ['a', 'b', 'c']
c = ['一', '二', '三']

data = [i + ' ' + j + ' ' + k for i, j, k in filter(lambda x: None not in x, zip_longest(a, b, c))]
print(data)


输出结果依然是 ['1 a 一', '2 b 二', '3 c 三']
这种方式不需要考虑长度不一致的问题,可以解决长度不一致的问题。


a = [1, 2, 3]
b = ['a', 'b', 'c']
c = ['一', '二', '三']
 
data = [' '.join([i,j,k]) for i, j, k in zip(a, b, c)]
print(data)

基于第一位老哥的回答修改了一下

这样可以

a = [1, 2, 3]
b = ['a', 'b', 'c']
c = ['一', '二', '三', ]

d = [f'{a[i]} {b[i]} {c[i]}' for i in range(len(a))]
print(d)
a = [1, 2, 3]
b = ['a', 'b', 'c']
c = ['一', '二', '三']

print(list(map(lambda x:"".join(x), zip(map(str, a), b, c))))