STUDY/Python

zip(), copy(), deepcopy()

채소보끔 2023. 3. 29. 10:13
728x90

1. zip()

- 여러개의 순회 가능한(iterable) 객체를 인자로 받음

- 각 객체가 갖고 있는 요소를 튜플 형태로 반복자(iterator)를 반환함

- 두 객체의 각 인덱스를 묶음

A_list = [0, 1, 2]
B_list = ['A', 'B', 'C']
for A_B in zip(A_list, B_list):
    print(A_B)

결과

 

2. copy()

- 1차원 시퀀스 복사

a = [1,2,3]
b = a.copy()

print(a)
print(b)

결과

b[0] = 4

print(a)
print(b)

결과

수정도 자유자재로 가능하다

 

- 2차원 이상의 리스트, 배열에서는 문제 발생함

a = [[1,2,3],[4,5,6]]
b = a.copy()

print(a)
print(b)

결과

b[0][0] = 7

print(a)
print(b)

결과

수정하면 복사본이 아닌 내용도 같이 수정되는 문제가 발생함

 

3. deepcopy()

- 단순 복제가 아닌 별개의 복제 버전을 생성해줌

- 원본이 영향을 안받음

import copy

a = [[1,2,3],[4,5,6]]
b = copy.deepcopy(a)


print(a)
print(b)

결과

b[0][0] = 7

print(a)
print(b)

결과

copy()함수와 달리 수정 본만 변경되었다

728x90