3. 연산자
3.1 산술 연산자
연산자 |
설명 |
+ |
덧셈 |
- |
뺄셈 |
* |
곱셈 |
** |
거듭제곱 |
/ |
나눗셈 |
// |
나눗셈의 몫 |
% |
나눗셈의 나머지 |
+ (덧셈)
숫자와 문자 구분 없이 두개의 객체를 더합니다.
>>> # (+) 덧셈 ... # 숫자 ... 10 + 20 30 >>> # 문자 ... 'abcd' + 'efgh' 'abcdefgh'
|
- (뺄셈)
숫자에서 숫자를 뺍니다.
>>> # - (뺄셈) ... 10 - 5 5 >>> 20.7 - 10.2 10.5 |
* (곱셈)
두 숫자를 곱하기 연상을 하고 문자인 경우 숫자만큼 반복 합니다.
>>> # * (곱셈) ... 2 * 3 6 >>> 'abc ' * 3 'abc abc abc ' |
** (거듭제곱)
숫자에 지수연산을 합니다.
>>> # ** (거듭제곱) ... 3 ** 3 27 >>> 3 * 3 * 3 27 |
/ (나눗셈)
두 수를 나눕니다. 정수로 표현 하려면 정수변환을 해야 합니다.
>>> # / (나눗셈) ... 13 / 3 4.333333333333333 >>> 13.0 / 3 4.333333333333333 >>> a = 13/3 >>> print(a) 4.333333333333333 >>> print(int(a)) 4 |
// (나눗셈의 몫)
나눗셈의 몫을 구하는 식을 사용 하는 경우 양의 수에만 사용하여야 합니다. 음의 수의 경우 원하는 결과와 다른 값을 얻을 수 있습니다. 그 이유는 몫을 구할 때 좌측에 가까운 정수를 가져오기 때문입니다.
>>> # (//) 나눗셈의 몫 ... 13 // 3 4 >>> 13.0 // 3 4.0 >>> -13 // 3 -5 >>> -13.0 // 3 -5.0 >>> divmod(-13, 3) (-5, 2) >>> divmod(13, 3) (4, 1) >>> abs(-13.0) // 3 4.0 |
0을 기준으로 보았을 때 양의 수는 우측으로 커지고 4.3333의 좌측에 있는 정수는 4입니다.
0을 기준으로 보았을 때 음의 수는 좌측으로 커지고 -4.3333의 좌측에 있는 정수는 -5입니다.
목과 나머지를 구하는 이유는 몇번 나눌 수 있는가, 몇이 남는가 이기 때문에 절대값으로 계산을 하는게 정답입니다.
% (나머지)
나눗셈의 나머지 값을 구합니다.
>>> # % (나머지) ... 13 % 3 1 >>> 13.0 % 3 1.0 >>> abs(-13.0) % 3 1.0 |
3.2 비교 연산자
True (참) 또는 False (거짓)의 반환 값을 구하는 연산자로 첫 글자는 대문자 입니다.
연산자 |
설명 |
< |
작음 |
> |
큼 |
<= |
작거나 같음 |
>= |
크거나 같음 |
<> |
|
== |
같음 |
!= |
같지 않음 |
< (작음)
(x < y) : x가 y보다 작은지 여부를 반환합니다.
>>> # < (작음) ... 5 < 7 True >>> 7 < 5 False >>> 'a' < 'b' True >>> 'azzz' < 'b' True >>> 'b' < 'azzzz' False >>> 'b' < 'A' False >>> 'a' < 'Z' False >>> 'z' < 'A' False >>> 'a' < 'A' False >>> 'A' < 'a' True |
다음과 같이 여러 숫자와 문자에 대해 한꺼번에 비교 연산을 수행할 수 있습니다. 숫자와 문자 비교는 오류가 발생 합니다.
>>> 2 < 3 < 4 < 5 True >>> 2 < 4 < 3 < 5 False >>> 'A' < 'b' < 'C' False >>> 'A' < 'C' < 'b' True |
> (큼)
(x < y) : x가 y보다 작은지 여부를 반환합니다.
>>> # > (큼) ... 5 > 7 False >>> 7 > 5 True >>> 'a' > 'b' False >>> 'azzz' > 'b' False >>> 'b' > 'A' True >>> 'a' > 'Z' True >>> 'a' > 'A' True |
여러개 비교
>>> 5 > 4 > 3 > 2 True >>> 'c' > 'b' > 'a' True >>> 'a' > 'Z' > 'A' True |
<= (작거나 같음)
(x <= y) : x 가 y 보다 작거나 같은지 여부를 반환합니다.
<= 기호를 띄어쓰기 하면 오류가 발생 합니다.
>>> # <= (작거나 같음) ... x = 10 >>> y = 20 >>> x < = y File "<stdin>", line 1 x < = y ^ SyntaxError: invalid syntax >>> x <= y True |
>= (크거나 같음)
(x >= y) : x 가 y 보다 크거나 같은지 여부를 반환합니다.
>>> # >= (크거나 같음) ... x = 10 >>> y = 20 >>> x >= y False >>> x = 'b' >>> y = 'a' >>> x >= y True |
== (같음)
(x == y) : x, y 두 객체가 같은지 여부를 반환합니다.
>>> # == (같음) ... x = 10 >>> y = 10 >>> x == y True >>> x = 'a' >>> y = 'b' >>> x == y False >>> x = 'aaa' >>> y = 'aAa' >>> x == y False |
!= (같지 않음)
(x != y) : x, y 두 객체가 같지 않은지 여부를 반환합니다.
>>> # != (같지 않음) ... x = 'aaa' >>> y = 'aAa' >>> x != y True >>> x = 10 >>> y = 100 >>> x != y True |
3.3 부울 연산자
연산자 |
수식 |
결과 |
and |
True and True |
True |
True and False |
False |
|
False and False |
False |
|
or |
True or True |
True |
True or False |
True |
|
False or False |
False |
|
not |
not True |
False |
not False |
True |
and
(x and y) : x와 y가 모두 True인 경우에만 True 이고 둘중 하나 또는 둘다 False이면 False를 반환 합니다.
>>> # and ... True and True True >>> (3 == 3) and (7 ==7) True >>> True and False False >>> (3 == 3) and (7 == 8) False >>> False and False False >>> (3 == 4) and (7 == 8) False |
or
(x and y) : x와 y가 모두 False인 경우에만 False이고 둘 또는 하나만 True이어도 True를 반환합니다.
>>> # or ... True or True True >>> (3 == 3) or (7 == 7) True >>> True or False True >>> (3 == 3) or (7 == 8) True >>> False or False False >>> (3 == 4) or (7 == 8) False |
not
x 가 True 이면 반대 값인 False 를 반환하고 x 가 False 이면 반대 값인 True를 반환합니다.
>>> # not ... not True False >>> not (3 == 3) False >>> not False True >>> not (7 == 8) True |
3.4 비트 연산자
연산자 |
설명 |
<< |
왼쪽 시프트 연산자, 변수 값을 지정된 비트 만큼 좌측 이동 |
>> |
오른쪽 시프트 연산자, 변수 값을 지정된 비트 만큼 우측 이동 |
& |
AND 연산자, 둘다 참인 경우 True |
| |
OR 연산자, 둘중 하나만 참이어도 True |
^ |
XOR 연산자, 둘중 하나만 참이어야 True |
~ |
반전 연산자, 참이면 False, 거짓이면 True |
<< (왼쪽 시프트)
지정된 숫자에 대해 지정된 비트 수 만큼 왼쪽으로 시프트 연산을 진행 합니다. 비트가 상위로 올라가며 숫자가 커집니다.
5 << 2 : 5(0000 0101)를 2비트 좌측으로 이동하여 20(0001 0100)이 됩니다.
2 << 3 : 2(0010)를 왼쪽으로 3비트 시프트 하여 16(0001 0000)이 됩니다.
>>> # << (왼쪽 시프트) ... 5 << 2 20 >>> 2 << 3 16 |
>> (오른쪽 시프트)
지정된 숫자에 대해 지정된 비트 수 만큼 오른쪽으로 시프트 연산을 진행 합니다. 비트가 우측으로 이동 하면서 첫째 자리를 넘어가는 비트는 삭제가 되어 숫자가 작아집니다.
5 >> 2 : 5(0101)를 2비트 우측으로 이동하여 1(0001)이 됩니다.
54 >> 3 : 54(0011 0101)을 오른쪽으로 3비트 시프트 연산하여 6(0110)이 됩니다.
>>> # >> (오른쪽 시프트) ... 5 >> 2 1 >>> 54 >> 3 6 |
& (비트 AND 연산자)
(x & y) : x와 y에 대하여 각각의 자리수에 있는 비트에 대해 AND 연산을 진행 합니다. 각 자리수별 비트 값이 1인 경우에만 1이 되고 나머지는 0으로 처리합니다.
(1101) 13 &
(1010) 10
(1000) 8을 반환합니다. 13과 10의 자리수 별 비트 값이 모두 1인 부분만 제외하고 0이 됩니다.
>>> # & (비트 AND 연산자) ... 13 & 10 8 |
| (비트 OR 연산자)
(x & y) : x와 y에 대하여 각각의 자리수에 있는 비트에 대해 OR 연산을 진행 합니다. 각 자리수별 비트 값이 0인 경우에만 0이 되고 나머지는 1으로 처리합니다.
(1101) 13 |
(1010) 10
(1111) 15를 반환합니다. 13과 10의 자리수 별 비트 값이 하나라도 1이면 1로 됩니다.
>>> # | (비트 OR 연산자) ... 13 | 10 15 |
^ (비트 XOR 연산자)
(x & y) : x와 y에 대하여 각각의 자리수에 있는 비트에 대해 XOR 연산을 진행 합니다. 각 자리수 별 비트 값이 하나만 1인 경우에 1이 되고 나머지는 0으로 처리합니다.
(1101) 13 ^
(1010) 10
(0111) 7을 반환합니다. 13과 10의 자리수 별 비트 값중 하나만 1이면 1로 됩니다.
>>> # ^ (비트 XOR 연산자) >>> 13 ^ 10 7 |
~ (비트 반전 연산자)
진정수에 사용하고 –( x + 1)으로 정의 된다고 Python document에 나와 있습니다.
The bitwise inversion of x is defined as -(x+1). It only applies to integral numbers.
보이는 숫자만 보면 안되고 데이터를 처리하는 단위(32, 64bit)로 나머지도 변경이 됩니다.
(1101) 13
000000000000000000000000000000000000000000000000000000000000(1101) 13
111111111111111111111111111111111111111111111111111111111111(0010) -14
>>> # ~ (비트 반전 연산자) ... ~13 -14 |
- copy coding -
'Tensorflow > Python' 카테고리의 다른 글
Python 기초 학습 4-2 자료구조 (튜플, 함수, 딕셔너리) (0) | 2019.03.09 |
---|---|
Python 기초 학습 4-1 자료구조 (리스트) (0) | 2019.03.04 |
python 기초 학습 2 (데이터 형, 변수) (0) | 2019.02.26 |
python 기초 학습 1 (0) | 2019.02.25 |
[텐서플로우] Windows 용 Tensorflow 개발환경 구성 (Version 1.12.0) (2) | 2018.12.28 |