> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 길이가 다를 수 있는 두 목록을 효율적으로 인터레이스할 수 있는 방법은 무엇입니까?

Python에서 길이가 다를 수 있는 두 목록을 효율적으로 인터레이스할 수 있는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-06 08:43:12
원래의
512명이 탐색했습니다.

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

파이썬 인터레이스: 목록을 교대로 결합

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿