📜  Python|交错多个相同长度的列表(1)

📅  最后修改于: 2023-12-03 15:19:17.502000             🧑  作者: Mango

Python | 交错多个相同长度的列表

在Python中,有时候我们需要将多个相同长度的列表交错在一起,即按照一定的规则将它们合并为一个新的列表。例如,将两个列表 [1, 2, 3] 和 [4, 5, 6] 交错合并后得到 [1, 4, 2, 5, 3, 6]。

本文将介绍两种方法来实现交错多个相同长度的列表。

方法一:使用zip和itertools.chain

Python中的zip函数可以将多个列表按照相同的位置打包成元组,然后使用itertools.chain函数将它们连接起来,最终得到一个新的列表。

import itertools

def interleave(*lists):
    return list(itertools.chain.from_iterable(zip(*lists)))

使用方法如下:

>>> interleave([1, 2, 3], [4, 5, 6], [7, 8, 9])
[1, 4, 7, 2, 5, 8, 3, 6, 9]
方法二:使用列表解析

另一种方法是使用列表解析,通过两层循环来交错多个相同长度的列表。

def interleave(*lists):
    return [item for pair in zip(*lists) for item in pair]

使用方法同方法一:

>>> interleave([1, 2, 3], [4, 5, 6], [7, 8, 9])
[1, 4, 7, 2, 5, 8, 3, 6, 9]

综上所述,使用zip和itertools.chain函数或列表解析都可以方便地交错多个相同长度的列表。根据实际情况选择合适的方法即可。