[Python]리스트 복사, 원본 유지하기
2023. 1. 4. 10:53ㆍ공부/Python
- 복사한 리스트를 정렬하기
def solution():
plist = [1,2,3]
copylist = plist
copylist.sort(reverse=True)
print(plist)
print(copylist)
return plist
결과
- 복사한 리스트를 복사하면 원본 리스트와 복사한 리스트 모두 정렬(내림차순)이 된다.
[3, 2, 1] [3, 2, 1] |
- 그 이유는 copylist에 plist가 복사하여 생성된게 아니라, copylist가 plist메모리를 가리키고 있기 때문이다. 즉, plist와 copylist는 같은 메모리에 접근하는 것이다.
- 원본 리스트는 유지하고, 복사한 리스트만 정렬하기
1. for문 사용하기(deep copy)
def solution():
plist = [1,2,3]
copylist = [i for i in plist]
copylist.sort(reverse=True)
print(plist)
print(copylist)
return plist
[1, 2, 3] [3, 2, 1] |
2. sorted( )함수 사용하기
def solution():
plist = [1,2,3]
copylist = sorted(plist,reverse=True)
print(plist)
print(copylist)
return plist
[1, 2, 3] [3, 2, 1] |
결과
- 두 가지 방법 모두 복사한 리스트만 내림차순 정렬이 된다.(원본 리스트 유지)
1. for문을 사용하여 plist에 있는 원소를 copylist에 하나씩 저장하기 때문에 다른 메모리에 저장이 되는 것이다.
2. sorted()함수를 사용하여 plist를 정렬하여 반환된 객체를 copylist에 저장하기 때문에 원본리스트를 유지할 수 있다.
(cf. sort()함수는 정렬하고자하는 객체 자체를 정렬하는 함수이다.)
'공부 > Python' 카테고리의 다른 글
[Python] 리스트에서 최댓값, 최솟값, 인덱스 구하기 | max(), min(), index() (0) | 2023.01.02 |
---|