6. append와 extend

파이썬에서 리스트에서 무언가를 더할 때 그냥 +로 더할 수 있다.

그러나 그렇게되면, 새로운 리스트를 반환하게 된다.

 

이때, 유사한 기능을 하는 extend나 append는 새로운 리스트를 추가하는 게 아니라, 기존의 리스트에 값을 추가하게 된다.

다만 이 둘도 동작상의 차이는 있다.

 

append는 매개변수 그 자체를 추가하게 된다.

 

 

extend는 삽입되는 리스트를 풀어서 각각의 엘리먼트로 추가된다.

 

 

내 코드는 아래와 같다.

def merge(list1, list2):
    # 여기에 코드를 작성하세요
    mer_list = []
    
    i=0
    j=0
    
    while ((i < len(list1)) and (j < len(list2))):
        if(list1[i] > list2[j]):
            mer_list.append(list2[j])
            j += 1
        else:
            mer_list.append(list1[i])
            i += 1
    
    if (i == len(list1)):
        mer_list.extend(list2[j:])
    elif (j == len(list2)):
        mer_list.extend(list1[i:])

            
    return mer_list
# 테스트 코드
print(merge([1],[]))
print(merge([],[1]))
print(merge([2],[1]))
print(merge([1, 2, 3, 4],[5, 6, 7, 8]))
print(merge([5, 6, 7, 8],[1, 2, 3, 4]))
print(merge([4, 7, 8, 9],[1, 3, 6, 10]))

 

 

 

해설의 코드는 아래와 같다.

+를 활용했음을 볼 수 있다.

def merge(list1, list2):
    i = 0
    j = 0

    # 정렬된 항목들을 담을 리스트
    merged_list = []

    # list1과 list2를 돌면서 merged_list에 항목 정렬
    while i < len(list1) and j < len(list2):
        if list1[i] > list2[j]:
            merged_list.append(list2[j])
            j += 1
        else:
            merged_list.append(list1[i])
            i += 1

    # list2에 남은 항목이 있으면 정렬 리스트에 추가
    if i == len(list1):
        merged_list += list2[j:]

    # list1에 남은 항목이 있으면 정렬 리스트에 추가
    elif j == len(list2):
        merged_list += list1[i:]

    return merged_list

# 테스트 코드
print(merge([1],[]))
print(merge([],[1]))
print(merge([2],[1]))
print(merge([1, 2, 3, 4],[5, 6, 7, 8]))
print(merge([5, 6, 7, 8],[1, 2, 3, 4]))
print(merge([4, 7, 8, 9],[1, 3, 6, 10]))