안녕하세요!
Python set(집합), boolean(불리언) 본문
집합(set)
- 순서 및 중복이 없다.
- 선언 방식 : set([ ])
- 요소 접근시 list()로 변환해서 인덱스로 접근한다.
주의 해야할 점은 순서는 없지만, 분명히 실행될때의 순서는 존재한다는 점.
s1 = set([1, 2, 3, 4, 5])
s2 = set('Hello')
s3 = set([1, 2, 3, 4, 5, 5, 3])
s4 = set([1, 2, 2, 3])
print(s1, type(s1))
print(s2, type(s2)) #순서 없음
print(s3, type(s3)) #중복 없음
print(s4, type(s4)) #중복 없음
{1, 2, 3, 4, 5} <class 'set'>
{'H', 'e', 'o', 'l'} <class 'set'>
{1, 2, 3, 4, 5} <class 'set'>
{1, 2, 3} <class 'set'>
마찬가지로 type을 확인해보면 class의 set인걸 확인 가능하다.
print(list(s1)[0])
1
이런식으로 index 사용하여 확인 가능하다.
집합에 사용되는 연산
- 교집합 : intersection (&)
- 차집합 : difference (-)
- 합집합 : union (|)

특징에 서술했듯, 각 단어 또는 기호로 표현이 가능하다. 아래에 각 사용 예시를 보자.
s1 = set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
s2 = set([5, 6, 7, 8, 9, 10, 11, 12])
#교집합
print (s1 & s2)
print (s1.intersection(s2))
{5, 6, 7, 8, 9, 10}
{5, 6, 7, 8, 9, 10}
#합집합
print (s1 | s2)
print (s1.union(s2))
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
합집합 및 교집합은 s1과 s2의 위치가 변하더라도, 결과가 변하지 않는다.
#차집합
print (s1 - s2)
print (s1.difference(s2))
print (s2 - s1)
print (s2.difference(s1))
{1, 2, 3, 4}
{1, 2, 3, 4}
{11, 12}
{11, 12}
위에 그림에서도 보이듯, 차집합은 s1이 주체인지 s2가 주체인지에 따라 결과물이 달라진다.
s1.add(11)
print(s1)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
요소에 11을 집어넣어봤다.
s1.remove(4)
print(s1)
{1, 2, 3, 5, 6, 7, 8, 9, 10, 11}
마찬가지로 요소에서 4를 제거해봤다.
집합의 경우, 잘 사용하면 데이터의 분류시 굉장히 시간을 단축 시킬 수 있다.
불리언
- 참(True)또는 거짓(False)을 나타내는 자료형 첫글자는 대문자
- True인것들, False인것들
Java와 달리 대문자로 시작하는점을 꼭 기억하자!
가장 중요한 기초를 잡고가자면, java든 python이든 0은 False 나머지 수는 True다.
print('1' != 1)
True
'1' 같은 문자열표현의 숫자는 수와 다르다.
python에서 boolean은 &&나 ||를 사용하는게아닌 and나 or을 사용한다.
a = 3
b = 1
(a == b) and (++a >= b)
False
↑ ↓ 각 Fasle로 결과 값은 같지만 차이점이 존재한다.
(a >= b) and (a <= b)
False
위의 boolean은 and앞의 식이 False값이기때문에 뒷 식은 실행 되지 않지만, 아래의 식은 앞의 식이 True이므로 뒤의 식까지 실행이 된다.
(a >= b) or (a <= b)
True
or의 경우도 마찬가지로 앞의 식이 True가 나와버리면 뒤의 식은 확인 할 필요없이 True이므로 실행되지 않는다.
간단히말하자면,
True , True | True, False | False, True | False, False | |
False | (True) | 두 식 모두 실행 (False) | 앞 식만 실행 (False) | 앞 식만 실행 (False) |
True | 앞 식만 실행(True) | 앞 식만 실행(True) | 두 식 모두 실행(True) | (False) |
이렇게 생각하면 되겠다.
if of Python
- 조건의 참, 거짓에 따라 동작 수행.
if 조건:
실행문1
실행문2
실행문3
if 조건:
실행문
elif 조건:
실행문
else:
실행문
python의 제어문은... java의 제어문에 비하면 굉장히 짧다..
그리고 { } 으로 구분하는게아닌 들여쓰기로 구분하니 주의하자.
x = -1
if x >= 0:
print('양수입니다.')
elif x < 0:
print('음수입니다.')
else:
print('숫자가 아닙니다.')
음수입니다.
또한 else if 가 아닌 elif 로 표현한다.
즉,
x = 3
if x == 3: #if의 들여쓰기도 잘 맞춰야 한다.
print('3입니다.')
IndentationError: unexpected indent
런식으로 if 앞에 빈칸이 생기면 인식하지 못해 에러가 발생한다.
b = 3
if b == 3: #로직은 모르겠고~ 조건만 정해진경우에 사용하는 pass
pass
print(b)
자바에서는 { }가 빈칸이여도 실행이 되는 반면, python에서는 빈칸으로 두면 에러가 발생한다.
그래서 pass를 사용하여 미리 틀만 구성해놓을 수 있다.
a = 1
b = 2
c = -1
d = -2
e = 0
print(not a)
print(not b)
print(not c)
print(not d)
print(not e)
False
False
False
False
True
앞에서 언급했던 python에서 0은 False 나머지 수는 True다 를 확인해 봤다.
'개발일지 > python' 카테고리의 다른 글
python 제어문 - for , list 안의 for문 (0) | 2023.11.06 |
---|---|
python 제어문 - 반복문 간단 정리! (0) | 2023.11.05 |
Python (list, tuple, dictionary) 간단 정리! (0) | 2023.11.03 |
Python(변수, 숫자, 문자열)을 알아보자! (2) | 2023.11.02 |
Anaconda, dataspell 설치 및 기본 설정1 (4) | 2023.11.01 |