梳理2个列表,每次n个元素

2024-04-28 19:30:46 发布

您现在位置:Python中文网/ 问答频道 /正文

给定两个等长列表:

a = [1,2,3,4,5,6,7,8,9]
b = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']

不管怎样,是否有办法一次将每个元素的前3个(或者更一般地说,对于更大的列表,前n个)元素组合起来,这样我就可以得到下面的列表输出:

c = [1,2,3,a,b,c,4,5,6,d,e,f,7,8,9,f,h,i]

我看到过一些解决方案,它们显示了如何从每个列表中一次为1个元素执行此操作,但我无法将其转换为n个元素。你知道吗


Tags: 元素列表解决方案办法
3条回答

使用列表切片

例如:

a = [1,2,3,4,5,6,7,8,9]
b = ['a','b','c','d','e','f','g','h','i']
res = []
for i in range(0, len(a), 3):
    res.extend(a[i:i+3] + b[i:i+3])
print(res)

输出:

[1, 2, 3, 'a', 'b', 'c', 4, 5, 6, 'd', 'e', 'f', 7, 8, 9, 'g', 'h', 'i']
>>> list(itertools.chain.from_iterable(
        a[p:p+n] + b[p:p+n] for p in range(0, len(a), n)))
[1, 2, 3, 'a', 'b', 'c', 4, 5, 6, 'd', 'e', 'f', 7, 8, 9, 'g', 'h', 'i']

尝试列表理解:

lst = [a[i:i+3] + b[i:i+3] for i in range(0, len(a), 3)]
result = [i for s in lst for i in s]
print (result)

回答

[1, 2, 3, 'a', 'b', 'c', 4, 5, 6, 'd', 'e', 'f', 7, 8, 9, 'g', 'h', 'i']

相关问题 更多 >