코테 공부/Python 문법

Python: bool, list 복사, 변수 생성

prefer_all 2022. 6. 22. 09:39

1. Bool

"" 거짓
[1, 2, 3]
[] 거짓
() 거짓
{} 거짓

문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어 있으면(" ", [ ], ( ), { }) 거짓이 된다. 


2. 리스트 복사

>>> a = [1,2,3]
>>> b = a

>>> id(a)
4303029896
>>> id(b)
4303029896
>>> a is b  # a와 b가 가리키는 객체는 동일한가?
True

>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 4, 3]

## a 리스트의 두 번째 요소를 값 4로 바꾸었더니 a만 바뀌는 것이 아니라 b도 똑같이 바뀌었다. 
## 그 이유는 앞에서 살펴본 것처럼 a, b 모두 동일한 리스트를 가리키고 있기 때문이다.

 

<a 리스트 값을 바꾸더라도 b 리스트에 영향 끼치지 않게 하는 방법>

(1) [:] 이용

첫 번째 방법으로는 다음과 같이 리스트 전체를 가리키는 [:]을 사용해서 복사하는 것이다.

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

위 예에서 볼 수 있듯이 a 리스트 값을 바꾸더라도 b 리스트에는 영향을 끼치지 않는다.

 

(2) copy 이용

두 번째는 copy 모듈을 사용하는 방법이다. 다음 예를 보면 from copy import copy라는 처음 보는 형태의 문장이 나오는데, 이것은 뒤에 설명할 파이썬 모듈 부분에서 자세히 다룬다. 여기에서는 단순히 copy 함수를 쓰기 위해서 사용하는 것이라고만 알아두자.

>>> from copy import copy
>>> a = [1, 2, 3]
>>> b = copy(a)

위 예에서 b = copy(a)는 b = a[:]과 동일하다.


3. 변수를 만드는 여러 가지 방법

>>> a, b = ('python', 'life')

위 예문처럼 튜플로 a, b에 값을 대입할 수 있다. 이 방법은 다음 예문과 완전히 동일하다.

>>> (a, b) = 'python', 'life'

튜플 부분에서도 언급했지만 튜플은 괄호를 생략해도 된다.

다음처럼 리스트로 변수를 만들 수도 있다.

>>> [a,b] = ['python', 'life']

또한 여러 개의 변수에 같은 값을 대입할 수도 있다.

>>> a = b = 'python'

파이썬에서는 위 방법을 사용하여 두 변수의 값을 아주 간단히 바꿀 수 있다.

>>> a = 3
>>> b = 5
>>> a, b = b, a
>>> a
5
>>> b
3

처음에 a에 값 3, b에는 값 5가 대입되어 있었지만 a, b = b, a 문장을 수행한 후에는 그 값이 서로 바뀌었음을 확인할 수 있다.

'코테 공부 > Python 문법' 카테고리의 다른 글

List Comprehension  (0) 2022.07.01
구현 문제: 시각, 왕실의 나이트  (0) 2022.07.01
Python 로또의 최고 순위와 최저 순위[lv.1]  (0) 2022.06.22
Python set 내장 함수  (0) 2022.06.21
Python 자료형: Dict, Set  (0) 2022.06.21