본문 바로가기
Python

Python List append/extend와 +=의 차이점 정리

by Queen2 2022. 9. 20.
728x90
반응형

문제를 풀다가 += 와 append를 섞어서 썼었는데, append가 아닌 +=를 쓰면서 에러가 나는 사례를 만나서,

둘의 차이점에 대해 정리해보려 합니다!

 

Append Extend +=
기존 리스트의 마지막에 값을 추가함 extend하는 iterable의 값들을 리스트에 추가함 extend와 유사
[1,3].append([4,5])

> [1,3,[4,5]]
[1,3].extend([4,5])

> [1,3,4,5]
[1,3] += [4,5]

> [1,3,4,5]
['a','b'].append('cat')

> ['a','b','cat']
['a','b'].extend('cat')

> ['a','b','c','a','t']
 

아래 코드로 실험해보세요!

k = [1, 3]
k.append([4,5])
k.extend([4,5])
k += [4,5]

print(k)

 

 

**단, 여기서 차이점은 extend와 +=의 차이점은 '+=는 지역 변수에서만 쓸 수 있다!'는 것입니다

def main():
    l = [1, 2, 3]

    def foo():
        l.extend([4])

    def boo():
        l += [5]

    foo()
    print l
    boo()  #UnboundlocalError

Stackoverflow에 있는 예제를 가지고 왔는데요, 보시면 extend는 함수 안의 변수 l이 잘 사용되었지만,

+=에 사용된 l이 boo의 지역변수로 참조되지 못하기 때문에 fali을 하게 됩니다

728x90
반응형

댓글