반응형

Python에서 list에 원소를 추가할때 사용되는 append와 extend의 차이를 다루고 있습니다. 



2022. 5. 28  최초작성



append와 expend 모두 list에 원소를 추가하는 방법이지만 원소를 추가한 결과에 차이가 있습니다. 



append

 

추가하려고 하는 대상을 그대로 리스트에 추가해줍니다.



리스트 객체를 하나 생성합니다.

>>> L = []

 

append는 하나의 아규먼트만 허용하기 때문에 다음처럼 추가하면 에러가 납니다. 

>>> L.append(1, 2, 3, 4, 5)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: append() takes exactly one argument (5 given)

 

append 사용시 하나씩 원소를 추가해야 합니다. 

>>> L.append(1)

 

원소 하나가 추가된 것을 볼 수 있습니다.

>>> L

[1]

 

리스트를 사용하면 여러 개의 원소를 추가할 수 있지만

>>> L.append([2,3])

 

리스트 내에 리스트로 추가됩니다. 

>>> L

[1, [2, 3]]



하나의 리스트에 다수의 원소를 리스트로 묶어서 넣고나서  결과적으로 1차원 리스트로 유지되게 하려면 다음에 소개하는 extend를 사용하면 됩니다. 




extend

추가하려고 하는 대상이 리스트이면 그 안에 들어있는 원소를 꺼내서 리스트에 추가해줍니다.

주의할점은 리스트안에 리스트가 있는 경우에는 외부에 있는 리스트에서만 한번 꺼낸다는 점입니다.



리스트 객체를 하나 추가합니다. 

>>> L = []

 

extend에서는 원소 하나를 직접 추가할 수 없습니다. 

>>> L.extend(1)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: 'int' object is not iterable

 

원소 하나라도 리스트에 넣어줘야 합니다. 

>>> L.extend([1])

 

리스트에서 원소를 꺼내서 리스트에 넣어줍니다. 결과적으로 1차원 리스트가 됩니다. 

>>> L

[1]

 

여러개의 원소를 리스트에 넣어서 추가할 수 있습니다. 

>>> L.extend([2, 3])

 

결과를 보면 extend를  1차원 리스트에 다수의 원소를 한번에 추가하는 방법으로 사용할 수 있다는 것을 알 수 있습니다. 

>>> L

[1, 2, 3]

 

리스트 안에 리스트가 있는 경우를 추가해봅니다.

>>> L.extend([[4, 5]])

 

가장 바깥쪽에 있는 리스트에서 원소를 꺼내서 리스트에 추가했다는 것을 알 수 있습니다.  

>>> L

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




 



문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts