공부/파이썬 2021. 8. 22. 17:51

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가 서로 바뀐다.