10-1. 변수 다루기

박성혜·2023년 3월 28일
0

[Python] 1. 왕초보

목록 보기
19/20
post-thumbnail

구글 코랩이나 주피터 노트북에서 직접 작성하며 풀어보세요.


1. 변수 할당 방법

변수를 할당하는 방법은 여러가지다.

방법 1

a = 3
b = 5
이렇게 따로 할당하지 않고 아래의 방법처럼 한 번에 할당할 수 있다.

a, b = 3, 5
a, b = (3, 5)
a, b = [3, 5]
(a, b) = 3, 5
[a, b] = 3, 5

변수와 할당할 값의 개수만 맞으면 된다.

방법 2

a = 'python'
b = 'python'
이렇게 따로 할당하지 않고 아래의 방법처럼 한 번에 할당할 수 있다.

a = b = 'python'

방법 3

1번에서 변수와 할당할 값의 개수만 맞으면 여러 개를 한 번에 할당할 수 있다고 했다.
그럼 다음과 같은 경우는 어떻게 하면 될까?

a, b = 1, 2, 3, 4, 5

위에서 어떤 값을 어떤 변수에 할당할지는 별표 표시를 활용해서 정할 수 있다.
별표는 나머지라는 뜻이다.
예시 1)

a, *b = 1, 2, 3, 4, 5
print(a)
print(b)

1
[2, 3, 4, 5]

a를 출력했더니 1만 나오고
b를 출력했더니 [2, 3, 4, 5]가 나온 것을 확인할 수 있다.

예시 2)

a, b, *c = [1, 3, 5, 4, 2]
print(a, b, c)

1 3 [5, 4, 2]

앞에서부터 a와 b에 하나씩 차례대로 들어간 후
c에는 나머지 [5, 4, 2]가 들어가있다.

예시 3)

*a, b = 1, 2, 3, 4, 5
print(a, b)

[1, 2, 3, 4] 5

b에는 값이 하나라도 들어가야 하기 때문에 맨 마지막 값 하나가 들어갔고 a에는 나머지 값이 모두 들어간 걸 확인할 수 있다.

예시 4)

a, *b, c = [1, 3, 5, 4, 2]
print(a, b, c)

1 [3, 5, 4] 2

이 역시 a와 c에 하나 씩은 들어가야 하기 때문에 하나 씩 들어갔고 나머지가 b에 들어갔다.

2. 변수 복사 방법

상황 1

만약 a = 5 라는 데이터를 절대 건드리면 안되는 상황이라고 가정해보자.
a를 건들지 않기 위해 변수 a를 변수 b에 복사했다.

b = a

그리고 b의 값을 변경했다.

b = 3

이제 print(a, b)를 해보면 각각 5와 3이 나와서 복사가 잘 되었다는 걸 확인할 수 있다.

상황 2

이번에는 a = [1, 3, 5, 4, 2] 를 절대 건드리면 안되는 상황이라고 가정해보자.

이번에도 a를 건들지 않기 위해 변수 a를 변수 b에 복사했다.

b = a

그리고 b의 1번째 값을 10으로 변경했다.

b[1] = 10

이제 print(a, b)를 해보면
a는 [1, 3, 5, 4, 2], b는 [1, 10, 5, 4, 2]가 나와야 하지만
실제로는 a도 [1, 10, 5, 4, 2]가 나온다.

어째서일까?
b만 건드렸는데 어째서 a도 변한 것일까?

이건 메모리의 효율성 때문이다.
만약 절대 건드리면 안되는 데이터 a의 용량이 5GB였다고 가정해보자.
a를 b에 복사를 하고 엔터를 치면 10GB가 된다.
컴퓨터 RAM이 8GB 정도였다면 튕길 수밖에 없다.
이런 상황을 대비해서 컴퓨터는 함부로 복사를 해주질 않는다.
그래서 인간은 b = a 를 복사한다는 의미로 넣었으나
컴퓨터는 '아 이제 b랑 a랑 같은 거구나!'라면서 b와 a를 같이 취급해버린다.
그래서 a와 b가 이름은 다르지만 아예 똑같아져버린 변수가 되었다.

상황 3

그렇다면 정말 제대로 복사하는 방법은 무엇일까?

a = [1, 3, 5, 4, 2]
b = a[:]

슬라이싱을 활용하면 된다.
a[:]는 a를 처음부터 끝까지 복사한다는 뜻이다.

상황 2에서 사용한 방법의 결과와는 다르게
a가 잘 보존된 것을 확인할 수 있다.

3. 서로 동일한 변수인지 확인하는 방법

위의 경우에서, a와 b가 동일한 변수인지 확인하려면
print(a is b) 를 사용하면 된다.
a와 b가 같은지를 묻기 때문에 같으면 True값, 다르면 False값이 나온다.

a = [1, 3, 5, 4, 2]
b = a
print(a is b)

True

주의해야 할 것은 아래의 경우는 a와 b가 서로 다른 변수라는 것이다.

a = [1, 3, 5, 4, 2]
b = [1, 3, 5, 4, 2]
print(a is b)

False

4. 딕셔너리, 집합 자료형 복사 방법

딕셔너리와 집합 자료형은 순서가 없기 때문에 슬라이싱을 할 수가 없다.
그렇다면 두 자료형은 어떻게 복사를 할 수 있을까?

이 경우는 '라이브러리' 라는 것을 활용한다.
마치 도서관에서 필요한 책을 가져와 읽는 것처럼
파이썬에 있는 라이브러리에서 수많은 도구를 가져와 사용할 수 있다.

빨간 박스가 라이브러리다.
copy라는 라이브러리에서 copy라는 도구를 가져옴으로써
copy함수를 사용할 수 있게 되었다.
copy함수는 다른 자료형에서도 사용할 수 있다.

5. 변수 교환 방법

a = 3
b = 5

c = a
a = b
b = c

print(a)
print(b)

5
3

사실 위 방법은 좀 구시대적인 방법이다.

a = 3
b = 5

a, b = b, a

print(a)
print(b)

5
3

파이썬은 이렇게 간단하다.


여기까지 파이썬에서 변수를 다루는 것에 대한 설명이었습니다.

수정이 필요한 부분이나 이해가 안 가는 부분이 있다면 언제든 말씀해주세요!^0^

다음 글에서는 변수 다루기 실습 문제를 풀어볼게요.

그럼 이만
총총

profile
인공지능이 인공지능을 개발하면 인공지능일까

0개의 댓글

관련 채용 정보