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))))