8. 리스트 할당과 복사(+@)

solarrrrr·2021년 7월 28일
0

Python

목록 보기
8/9
post-thumbnail

공부 이틀 못 했더니 이전에 공부한 내용들이 휘발됐다.
하아..
물론 다시 보면 기억은 날 것 같지만..

오늘은 저번 시간에 이어서
리스트를 계속 만져보는 챕터인데 할당과 복사 파트이다.

1. 리스트의 할당과 복사

중요한 건,
할당은 같은 리스트를 다른 변수가 공유하는 것이고
복사는 다른 변수가 다른 리스트를 개별적으로 갖는 것이다.

a = [0, 0, 0, 0, 0]
b = a

이런 식으로 할당해서 결과를 보면
둘 다 같은 리스트를 갖게 되지만
개별적으로 각기 다른 리스트를 갖는 것이 아니라
하나의 리스트를 갖게 되는 것이 할당이다.

변수라는 게 예전에 어디서 공부하다 보았는데
내용물을 담는 그릇이 아니라
내용물이 위치하고 있는 주소값을 가리키는 이정표 같은 거라고
본 기억이 난다.

할당의 경우엔 a와 b 변수가 모두 [0, 0, 0, 0, 0]이라는
리스트를 나타내지만 결국 하나의 주소값을 가리키는 셈이다.

그런데 복사의 경우엔 서로 다른 주소값을 가리키게 된다는 것이다.
[0, 0, 0, 0, 0]이라는 리스트에 컴퓨터 어딘가에
하나 더 새롭게 복사되어 주소를 얻어 생긴다는 것.

2. 반복문으로 요소 출력

a = [39, 21, 53, 62, 19]
for i in a:
	print(i)

이렇게 하면 리스트의 요소를 하나씩 출력한다.

그런데 문득 궁금한 것이 생겼다.
코딩도장의 리스트 예제에 보면 저 숫자의 나열이
항상 등장하는데 왜 하필 저 숫자들인지,
무슨 의미가 있는지 쓸데없이 궁금해졌다 ㅎㅎ

일단 중요한 게 아니니 패스.

for i in [39, 21, 53, 62, 19]:
	print(i)

이렇게 a라는 변수 대신 직접 리스트를 적어도
똑같은 동작을 수행한다.

리스트에서 가장 작은 수와 가장 큰 수 구하기

  • 반복문 이용
  • sort 이용
  • min, max 함수 이용
## 반복문을 이용한 방법
## 제일 작은 수 구하기
a = [38, 21, 53, 62, 19]
smallest = a[0]
for i in a:
	if i < smallest:
    	smallest = i

## 제일 큰 수 구하기
a = [38, 21, 53, 62, 19]
largest = a[0]
for i in a:
	if i > largest:
    	largest = i

smallest라는 변수에 기준점으로 사용할
리스트의 첫 번째 값을 임의로 넣어준다.

반복문을 돌리면서 i값이 변수에 담긴 기준값보다
작다면 i값으로 대체해 준다.

반복해 나가면서 가장 작은 값으로 갱신해 주는 방식이다.

반대로 가장 큰 수를 구하려면
부등호를 반대로 작성해서 큰 수일 경우
변수의 값을 갱신해 주면 된다.

## sort를 이용한 방법
a = [38, 21, 53, 62, 19]
a.sort() # 오름차순
a.sort(reverse = True) # 내림차순
print(a[0])

sort를 이용한 방법은 간단하다.
리스트의 숫자를 오름차순, 내림차순으로 각각 정렬해서
첫 번째 인덱스를 가져오면 된다.

## min, max 함수 이용
a = [38, 21, 53, 62, 19]
min(a) # 가장 작은 값
max(a) # 가장 큰 값

매우 심플하다.
넘 좋다. ㅎㅎ

리스트 요소 모두 더하기

  • 반복문 이용
  • sum 함수 이용
## 반복문을 이용한 방법
a = [10, 10, 10, 10, 10]
x = 0
for i in a:
	x += i    

x에 0을 넣어주고 반복을 통해
i값을 x에 계속 더해 주면 끝.

## sum 함수 이용
a = [10, 10, 10, 10, 10]
sum(a)

조..좋다!

이런 심플한 함수들에는 (min, max, sum)
리스트뿐 아니라 모든 반복 가능한 객체를 넣을 수 있다고 한다.
(리스트, 튜플, 딕셔너리, 세트, range 등등)

근데 딕셔너리랑 세트 기억 희미한 거 실화인가...

profile
몰입

0개의 댓글