###2019.03.06 TIL
(TIL은 스스로 이해한 것을 바탕으로 정리한 것으로 오류가 있을 수 있습니다)
컴프리헨션 & 연산자
========================
대답해보기
- 컴프리헨션이란?
- 연산자의 종류 및 각각 간단하게 이야기해보라
어제 복습을 덜 한 슬픔을 뒤로 하고 공부했던 것들을 조금 더 정리해보고자 한다.
오늘의 보너스
프로그램에서 a = 1 은 할당이고 a == 1 이 같다는 표현이다.
파이썬에서의 False
-False / None / “” / [] / {} / set()
컴프리헨션
컴프리헨션은 하나 이상의 이터레이터(iterater 반복적으로 하나씩 나올 수 있는 객체[list, string, dic. set, tuple 등]로 부터 파이썬의 자료구조를 만드는 컴팩트한 방법이다.
리스트컴프리헨션
li = [i for i in range(1, 10)] —> 1부터 10전까지의 i로 리스트 만들기
딕셔너리 컴프리헨션
원래 딕셔너리 만들기 위해서는 아래와 같이 만들 수 있다.
>>> tu = (("a",1), ("b",2))
>>> dic = {}
>>> for k,v in tu:
>>> dic[k] = v
>>> #위와 같이 만들 수 있다. 하지만 컴프리헨션을 이용하면 한 문장으로 만들 수 있다.
>>>
>>> dic = {key:value for key, value in tu}
하지만 컴프리헨션을 통해 한 문장으로 딕셔너리를 만들 수 있다.
오퍼레이터(연산자)
bit 연산자
위의 진리표에 따라 비트 단위로 2진법 비교
bin(0b1010 & 0b1100) — > 0b1000 그리고
bin(0b1010 0b1100) —> 0b1110 또는 bin(0b1010 ^ 0b1100) —> 0b110 이거는 공부 더 필요할 듯
EXCLUSIVE OR 단독이다. 하늘아래 나만 존재 할 수 있다.
bit 연산자는 게임 인벤토리등을 구성할 때 쓸 수 있다.
shift 연산자
프로그래밍 할 때 2의 배수로 나오면 성능이 더 좋다? 이게 맞는 말인가?
실제로 맞는 말이다. shift operator로 인해 성능이 더 좋음
알고리즘에서 2의 배수로 가는 경우 shift 연산자를 직접 써주면 성능이 더 좋아진다.
1«1 —> 1은 0001 이고 «1은 1을 왼쪽으로 한칸 민다는 것이다.
답은 2
1«2 —> 1을 왼쪽으로 2칸 밀게 되므로 0100 답은 4
1«3 —> 1을 왼쪽으로 3칸 밀게 되므로 1000 답은 8
10»1 —> 10은 2진법으로 하면 1010 이므로 이걸 오른쪽으로 1칸 밀면 101이 된다 답은 5
논리 연산자 (logical operation)
논리 연산자는 진리표를 보고 참고하면 되고, 몇가지 예시를 들어보려고 한다.
[1,2] or [] —-> [1,2]
[1,2] and [] —> []
[1,2] or [3,4] —> [1,2]
[1,2] and [3,4] —> [3,4]
[] and [1,2] —> []
[] or [1,2] —> [1,2]
여기서 규칙은 제일 마지막에 참조한 객체를 반환이다.
[1,2] or [] —-> [1,2] ㅡㅡ [1,2] 가 참이므로 더 이상 보지 않고 반환
- [1,2] and [] —> [] ㅡㅡ and 이므로 2번까지 봐야하고 []가 마지막으로 참조한 객체이므로 [] 반환
[1,2] or [3,4] —> [1,2] ㅡㅡ or이라 [1,2]가 참이므로 더 이상 보지 않고 반환
[1,2] and [3,4] —> [3,4] ㅡㅡ and 이므로 [3,4]까지 봐야하고 [3,4] 반환
[] and [1,2] —> [] ㅡㅡ and인데 처음부터 false 이므로 더 이상 보지 않고 [] 반환
- [] or [1,2] —> [1,2] ㅡㅡ or이므로 두 번째까지 확인하고 [1,2] 반환
산술연산자(모듈러)
산술연산자는
: 더하기
: 뺴기
/ : 나누기 (실수형 나누기)
/ : 몫의 정수 부분만 표현 (정수형 나누기)
- : 곱하기
** : 2 ** 50 —> 2에 50승 (보통 math.pow(2, 50) 으로 쓴다.)
% : 8 % 3 —> 8을 3으로 나눈 나머지 표현
+= / -= / *= / **= 도 쓸 수 있음