예:
입력: list1 = [1, 2, 3] list2 = [`a`,` b`, `c `] 출력: [(1,` a`), (2, `b`), (3,` c`)] 입력: list1 = [1, 2, 3, 4] list2 = [1, 4, 9] 출력: [(1, 1), (2, 4), (3, 9), (4, ``)]
접근법 # 1: Naive
for 루프를 사용하여 두 목록을 튜플 목록으로 연결합니다. 그러나 단점은 두 목록의 길이가 같아야 한다는 것입니다.
def
merge (목록1, 목록2):
병합 목록
=
<코드 클래스 = "일반 "> [(목록1 [i], 목록2 [i])
i
범위
(
0
,
<코드 클래스 = "기능"> 렌 <코드 클래스 = "일반"> (목록1))]
<코드 class = "keyword"> 반환 병합 목록
# 드라이버 코드
<코드 클래스 = "일반"> l ist1 <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> [ <코드 클래스 = "값"> 1 <코드 클래스="일반">, <코드 클래스 ="값 "> 2 <코드 클래스 ="일반 ">, <코드 클래스 ="값 "> 3 <코드 클래스 = "일반">]
<코드 클래스 = "일반" > 목록2 <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> [ <코드 클래스 = "문자열"> `a` <코드 클래스 ="일반 ">, <코드 클래스 ="문자열 ">` b` <코드 클래스 = "일반">, <코드 클래스 = "문자열"> `c` ]
인쇄
(병합(목록1, 목록2 ))
종료:
[ (1, `a`), (2,` b`), (3, `c`)]
접근 방식 # 2: 소박하지만 더 효과적입니다.
이 이 방법은 위의 단점을 수정하고 두 목록의 길이가 같지 않은 경우 잘 작동합니다. 이것은 또한 인덱스 오류에 대한 try catch 오류를 제공합니다.
<코드 클래스 = "일반"> 병합 목록 <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> [] <코드 클래스 = "keyword"> for
<코드 클래스 = "일반"> 목록2 <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> [ <코드 e 클래스 = "문자열"> `아` <코드 클래스 ="일반 ">, <코드 클래스 ="문자열 ">` b` <코드 클래스 = "일반" > , <코드 클래스 = "문자열"> `c` <코드 클래스 ="일반 ">] <코드 클래스 ="기능 "> 인쇄 종료: [(1, `a`), (2,` b`), (3, `c`)] 접근법 # 3
종료: [ (1, `a`), (2,` b`) , (3, `c`)] 접근법 # 5
<코드 클래스 = "일반" > 목록2
종료: [(1, `a`), (2,` b`), (3, `c`)] |