首页 >后端开发 >Python教程 >如何在 Python 中有效地交错两个可能不同长度的列表?

如何在 Python 中有效地交错两个可能不同长度的列表?

Linda Hamilton
Linda Hamilton原创
2024-12-06 08:43:12515浏览

How Can I Efficiently Interlace Two Lists of Potentially Different Lengths in Python?

Pythonic 交错:交替组合列表

在 Python 中,交错两个列表意味着创建一个新列表来交替两个列表中的元素。要实现此目的,请考虑以下场景:

长度匹配列表

如果两个列表具有相同数量的元素,一个简单的解决方案是使用切片:

list1 = ['f', 'o', 'o']
list2 = ['hello', 'world']
result = [None] * (len(list1) + len(list2))
result[::2] = list1
result[1::2] = list2
print(result)

这将产生所需的输出:

['f', 'hello', 'o', 'world', 'o']

长度不匹配列表

当输入列表的长度不同时,需要额外的逻辑:

在末尾保留多余的元素

将较长列表中的多余元素保留在末尾,使用这种方法:

def interlace(list1, list2):
    result = []
    i, j = 0, 0  # indices for list1 and list2

    while i < len(list1) and j < len(list2):
        result.append(list1[i])
        result.append(list2[j])
        i += 1
        j += 1

    # Add remaining elements from the longer list
    result.extend(list1[i:] if len(list1) > len(list2) else list2[j:])

    return result

均匀地散布元素

分散多余的元素元素均匀地分布在交错列表中,使用此方法:

def interlace_evenly(list1, list2):
    shorter_list = list1 if len(list1) < len(list2) else list2
    longer_list = list1 if len(list1) > len(list2) else list2

    result = []

    # Intersperse elements of the shorter list
    for i in range(len(shorter_list)):
        result.append(shorter_list[i])
        result.append(longer_list[i % len(longer_list)])

    # Add remaining elements from the longer list
    result.extend(longer_list[len(shorter_list):])

    return result

以上是如何在 Python 中有效地交错两个可能不同长度的列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn