Python #3.2 - 리스트

이말감·2021년 4월 27일
0

Python

목록 보기
4/7

1) 리스트 복사하기

  • 얕은 복사(shallow copy)
scores = [10, 20, 30, 40, 50]
values = scores

위와 같이 리스트를 복사하였다면, values 를 print 하면 리스트가 그대로 출력되지만
실제로는 리스트가 복사된 것이 아니라 scores와 values는 모두 동일한 리스트 객체를 가리키고 있다.
이를 얕은 복사(shallow copy)라고 한다.

  • 깊은 복사(deep 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]
  • 상호곱(Cross produt) 형태의 집합

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') , ...]
profile
전 척척학사지만 말하는 감자에요

0개의 댓글