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
반응형
'Python' 카테고리의 다른 글
Python 딕셔너리 키 값, value 값으로 정렬하는 법 (1) | 2022.09.21 |
---|---|
Heapq 알고리즘 개념 및 활용방법 정리 (1) | 2022.09.21 |
2진법, 8진법, 16진법, 10진법 파이썬 변환 총정리 (0) | 2022.09.12 |
BFS/DFS 탐색 개념 정리 (0) | 2022.09.10 |
Python Class 개념 한번에 이해하기 (객체,인스턴스,어트리뷰트) (0) | 2022.09.08 |
댓글