1) 리스트 복사하기
scores = [10, 20, 30, 40, 50]
values = scores
위와 같이 리스트를 복사하였다면, values 를 print 하면 리스트가 그대로 출력되지만
실제로는 리스트가 복사된 것이 아니라 scores와 values는 모두 동일한 리스트 객체를 가리키고 있다.
이를 얕은 복사(shallow copy)라고 한다.
(1) list() 메소드 사용
list() 내장 함수는 리스트를 받아서 복사본을 생성하여 반환한다.
ex)
scores = [10, 20, 30, 40, 50] values = list(scores) value[2] = 99 print(scores) # 출력값 : [10, 20, 30, 40, 50] print(values) # 출력값 : [10, 20, 99, 40, 50]
(2) deepcopy() 메소드 사용
ex)
from copy import deepcopy scores = [10, 20, 30, 40, 50] values = deepcopy(scores) print(values) # 출력값 : [10, 20, 30, 40, 50,]
2) 리스트와 함수
변경가능한 객체인 리스트를 함수에 전달할 때, 리스트는 참조값으로 전달된다.
리스트는 함수 안에서 변경할 수 있다. 즉 리스트의 요소들은 변경될 수 있다.
ex)
def func(list) : list[0] = 99 values = [0,1,1,2,3,5,8] print(values) func(values) print(values) # 출력값 : [0,1,1,2,3,5,8] [99,1,1,2,3,5,8]
3) 리스트 함축
전체적인 구조
[ expression(출력식) for i in old_list(변수의 범위) if filter(i) ]
ex)
list1 = [3,4,5] list2 = [x*2 for x in list1] print(list2) # 출력값 : [6,8,10]
ex)
colors = ["white", "silver", "black"] cars = ["bmw5", "sonata", "malibu", "sm6"] colored_car = [ (x,y) for x in colors for y in cars) ] print(colored_car) # 출력값 [('white', 'bmw5'), ('white', 'sonata') , ...]