>>> bool([1,2,3])
True
### >>> bool([]) 빈 리스트
False
>>> bool(0) #숫자 0
False
>>> bool(3)
True
>>> a = [1,2,3]
>>> id(a)
140589456911232
>>>
➡️ [1,2,3]값을 가지는 리스트 자료형(객체)이 자동으로 메모리에 생성되고, 변수 a는 [1,2,3]을 리스트가 저장된 메모리의 주소를 가리킨다. 이때 객체의 주소값을 돌려주는 파이썬 내장함수 id()
로 확인가능하다.
>>> a = [1,2,3]
>>> b = a
#a와 b의 주소가 같음
>>> id(a)
140589456911232
>>> id(b)
140589456911232
➡️ b변수에 a변수를 대입하면 b와 a는 완전히 동일하다. 위의 주소가 동일함으로 확인가능하다.
>>> a[1] = 8
>>> a
[1, 8, 3]
>>> b
[1, 8, 3]
➡️ a의 두번째 요소에 8을 넣어도 a와 b의 값이 둘다 똑같이 바뀌었음을 알 수 있다.
➡️ 그렇다면, b변수를 생성할때 a변수의 값을 가져오면서 a와는 다른 주소를 가리키도록 할때는 어떻게 할까??
1. [:]
이용
[:]
를 사용해 복사한다. >>> a = [1, 2, 3]
>>> b = a[:] # 방법1
>>> a[1] = 4
#a와 b가 다름
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]
2. copy 모듈 이용
>>> from copy import copy
>>> a = [1, 2, 3]
>>> b = copy(a) # 방법2
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]
# 튜플로 a,b값 대입
>>> a, b = ('python', 'life')
# 위와 동일하며 튜플은 괄호 생략가능.
>>> (a, b) = 'python', 'life'
#리스트로 변수선언 가능
>>> [a,b] = ['python', 'life']
# 여러 개의 변수에 같은 값 대입 가능.
>>> a = b = 'python'
# 두 변수의 값 바꾸기
>>> a = 3
>>> b = 5
>>> a, b = b, a
>>> a
5
>>> b
3