Python/Python Basic

Python Basic : list append, extend (list에 요소 추가하기, append extend 차이)

CosmosProject 2022. 10. 11. 00:02
728x90
반응형

 

 

 

list에 적용할 수 있는 append, extend method를 알아보고 이 둘의 차이에 대해 알아보겠습니다.

 

 

Syntax

list.append(element)

 

append method는 parameter로서 받은 값을 list의 가장 오른쪽에 추가해줍니다.

 

 

 

 

Syntax

list.extend(iterable_value)

 

extend method는 iterable type의 값을 받아 그 값들을 list의 가장 오른쪽에 단일 요소로서 추가해줍니다.

iterable type의 값을 받는다는 것은 list, set, tuple, dictionary 등의 값을 받는다는 것입니다.

9, 'value1' 등의 단일 값을 전달하면 extend는 오류를 발생시킵니다.

 

 

여기까지 보면 설명이 잘 이해되지 않아도 append와 extend는 약간의 차이가 있다는 것이 감이 올겁니다.

 

감이 안오셔도 됩니다. 이제 예시를 통해 상세히 알아보겠습니다.

 

 

 

 

먼저 append method부터 봅시다.

 

list_test_1 = [1, 2, 3, 4, 5]

list_test_1.append(9)
print(list_test_1)



-- Result
[1, 2, 3, 4, 5, 9]

 

- list_test_1.append(9)

list_test_1에 append method를 적용했습니다.

append method의 parameter로서 9를 전달했습니다.

따라서 [1, 2, 3, 4, 5] 라는 list의 가장 끝쪽(=오른쪽)에 9를 추가한다는 의미입니다.

 

그래서 결과를 보면 [1, 2, 3, 4, 5, 9] 인 것을 알 수 있죠.

 

 

 

 

 

list_test_1 = [1, 2, 3, 4, 5]

list_test_1.append([9, 10])
print(list_test_1)



-- Result
[1, 2, 3, 4, 5, [9, 10]]

 

- list_test_1.append([9, 10])

이번에는 append의 parameter로서 단순한 어떤 값 하나가 아니라 [9, 10]이라는 list를 전달했습니다.

 

따라서 [9, 10]이라는 list가 list_test_1의 마지막 요소로서 추가됩니다.

 

[1, 2, 3, 4, 5, [9, 10]]

그래서 결과를 보면 list 내부에 [9, 10]이라는 list가 추가되었죠.

 

 

 

 

 

list_test_1 = [1, 2, 3, 4, 5]

list_test_1.append({'key1': 9, 'key2': 10})
print(list_test_1)



-- Result
[1, 2, 3, 4, 5, {'key1': 9, 'key2': 10}]

 

- list_test_1.append({'key1': 9, 'key2': 10})

append method의 인자로서 전달가능한 것은 상당히 다양합니다.

위처럼 dictionary를 전달할 수 있으며 전달된 dictionary가 list의 가장 마지막 요소로 추가됩니다.

 

 

 

 

 

 

 

이제 extend method를 알아봅시다.

 

list_test_2 = [1, 2, 3, 4, 5]

list_test_2.extend(9)
print(list_test_2)



-- Result
TypeError: 'int' object is not iterable

 

위 예시를 봅시다.

extend method에 9를 전달해서 list에 9를 추가하려했는데 에러가 발생합니다.

에러메세지를 보면 int type은 iterable type이 아니라는 것이죠.

 

따라서 extend는 iterable type의 값만을 받습니다.

list, set, tuple, dictionary type의 데이터만을 받는다는거죠.

 

 

 

 

 

list_test_2 = [1, 2, 3, 4, 5]

list_test_2.extend([9])
print(list_test_2)



-- Result
[1, 2, 3, 4, 5, 9]

 

- list_test_2.extend([9])

위처럼 추가하려는 요소를 list에 담던가 해서 iterable type 형태의 데이터로 전달해야 합니다.

 

결과를 보면 9가 제대로 추가된 것을 볼 수 있습니다.

 

 

 

 

 

list_test_2 = [1, 2, 3, 4, 5]

list_test_2.extend([9, 10])
print(list_test_2)



-- Result
[1, 2, 3, 4, 5, 9, 10]

 

위 예시처럼 [9, 10]을 extend의 parameter로 전달하니 원본 list에 9, 10 두 개 숫자가 추가되었습니다.

 

여기서 바로 append와 extend method의 차이점을 볼 수 있습니다.

 

 

 

 

 

list_test_1 = [1, 2, 3, 4, 5]

list_test_1.append([9, 10])
print(list_test_1)



-- Result
[1, 2, 3, 4, 5, [9, 10]]

 

list_test_2 = [1, 2, 3, 4, 5]

list_test_2.extend([9, 10])
print(list_test_2)



-- Result
[1, 2, 3, 4, 5, 9, 10]

 

append method는 전달받은 값 그 자체를 list의 마지막 요소로서 추가합니다.

extend method는 전달받은 iterable 값의 요소를 단일 값으로 다 풀어서 원본 list에 추가합니다.

 

이러한 차이가 있죠.

 

그래서 위 2개 예시를 비교해보면 append, extend method의 인자로서 모두 [9, 10]을 전달했는데

append의 결과로선 [1, 2, 3, 4, 5, [9, 10]]으로 마지막 요소로서 [9, 10] 그 자체가 추가되었습니다.

하지만 extend의 결과는 [1, 2, 3, 4, 5, 9, 10]으로 전달받은 list [9, 10]의 요소를 다 해체해서 그 단일 값들을 원본 list에 추가한 것입니다.

 

 

 

 

list_test_2 = [1, 2, 3, 4, 5]

list_test_2.extend({'key1': 9, 'key2': 10})
print(list_test_2)



-- Result
[1, 2, 3, 4, 5, 'key1', 'key2']

 

extend method에는 위처럼 dictionary를 전달할 수 있으며,

dictionary를 인자로서 전달한 경우 dictionary의 key값만을 고려하여 key값들을 원본 list에 추가합니다.

 

 

 

 

 

 

list_test_2 = [1, 2, 3, 4, 5]

list_test_2.extend((6, 7, 8, 9))
print(list_test_2)



-- Result
[1, 2, 3, 4, 5, 6, 7, 8, 9]

 

tuple type의 값을 extend method에 전달할 수도 있으며 결과는 위에서 봤던 것과 동일합니다.

 

 

 

 

 

 

728x90
반응형