이 프로그램은 사용자로부터 입력받은 리스트를 복사(copy)하거나 복제(clone)하는 방법을 다룹니다. 여기서는 슬라이싱(slicing) 기법을 사용하는데, 이 기법은 리스트 자체의 사본을 참조와 함께 생성하는 방식입니다. 이 과정을 흔히 클로닝(cloning)이라고 부릅니다.
알고리즘
리스트를 복제하는 절차는 다음과 같이 간단합니다.
- 1단계: 배열(리스트)에 들어갈 요소들을 입력받습니다.
- 2단계: 슬라이싱 연산자(
:)를 사용하여 리스트를 복제합니다.
예제 코드
# 파이썬 프로그램 - 슬라이스 연산자를 이용한 리스트 복사/복제
def copyandcloning(cl):
copylist = cl[:]
return copylist
# 드라이버 코드
A = list()
n1 = int(input("리스트의 크기를 입력하세요 ::"))
print("리스트의 요소를 입력하세요 ::")
for i in range(int(n1)):
k = int(input(""))
A.append(k)
clon = copyandcloning(A)
print("복제 전 원본 리스트:", A)
print("복제 후 리스트:", clon)
실행 결과
리스트의 크기를 입력하세요 ::6 리스트의 요소를 입력하세요 :: 33 22 11 67 56 90 복제 전 원본 리스트: [33, 22, 11, 67, 56, 90] 복제 후 리스트: [33, 22, 11, 67, 56, 90]
핵심 포인트 정리
cl[:]처럼 시작 인덱스와 끝 인덱스를 모두 생략한 슬라이싱은 리스트 전체의 얕은 복사본(shallow copy)을 만듭니다.- 단순 대입(
copylist = cl)은 새로운 리스트를 만드는 것이 아니라 같은 객체를 참조할 뿐이므로, 한쪽을 수정하면 다른 쪽도 함께 변경됩니다. - 슬라이싱 외에도
list.copy(),list()> 생성자,copy.deepcopy()등의 방법으로 리스트를 복제할 수 있습니다. 중첩된 리스트가 있다면 깊은 복사(deep copy)를 사용해야 합니다.