20210822 점프 투 파이썬
02-6 집합 자료형
리스트지만 중복과 순서가 없는 리스트
s1 = set([1,2,3,4])
순서가 제멋대로 라서 순서정렬해서 쓰려면 리스트나 튜플로 변환해서 사용
L1 = list(s1)
말그대로 집합이기 때문에 교집합이나 합집합, 차집합 연산이 가능하다.
교집합 s1 & s2 s1.intersection(s2)
합집합 s1 | s2 s1.union(s2)
차집합 s1 - s2 s1.difference(s2)
교집합, 합집합은 순서 무관 (s1&s2) is (s2&s1) true
집합에 값 하나 추가할땐 s1.add(값), 값 여러개 추가할 땐 s2.update(리스트)
집합내 값 제거는 s1.remove(값)
02-7 불 자료형
참거짓. True, False
2>1, 1==1
문자열에 값이 있으면 참 비어있다면 거짓
리스트, 튜플, 딕셔너리, 집합에 값이 있으면 참 비어있다면 거짓
숫자형에서 0은 거짓 그외의 숫자는 참, 숫자가 아니면 거짓
while 조건문:
if 조건문:
else:
bool(값) 으로 참거짓 식별 가능
02-8 변수
자료형을 지정하지 않고 사용.
c나 c++ 과의 차이라면 값(숫자 문자)이 저장된 주소에 대한 저장이라서
a = 3 or "test"
b = 3 or "test"
이면 a와 b의 id는 동일하다. id(a) == id(b) , a is b True
리스트같은 자료형에선 값에 상관없이 서로 다른 주소를 지정하는 차이가 있다.
a = [1,2,3]
b = [1,2,3]
인 경우 a와b는 같은 주소가 아니다. 따라서 a리스트의 값을 변경해도 b에는 변화가 없다.
a is b False
하지만 위의 경우에서
a = b 이렇게 하면 a 에 b의 주소값이 할당되서 같은 주소를 의미하게 된다.
이경우 a를 변경하면 b도 변경이 된다(같은 리스트의 주소값이기 때문)
b리스트에 a와 동일한 값을 가진 다른 리스트를 넣으려면
b = a[:] 이렇게 리스트 내 값을 하나씩 따로 복사해야 한다.
혹은
from copy import copy
b = copy(a)
이렇게 copy모듈을 사용해야한다.
a, b, c = 3, 5, 10
(a , b) = 'test1, 'test2'
a, b = ('test4', 590)
[a,b] = [999, 19238]
a = b = c = 'python'
예외
a, b = b, a
이경우 b와 a가 서로 바뀐다.