[참조]
(3) 구문(statement)의 들여쓰기(indentation)
(11) 여러 줄 → 한줄(;); 한 줄 → 여러 줄(\) 연속; 줄바꾸기
print(a); print(b)
)# 한 줄 주석
""" 여러 줄 주석 """
또는 ''' 여러 줄 주석 '''
a = 5
1) 산술 연산자 (Arithmetic Operators): +, -, *, /, %, //, **
2) 비교 연산자 (Comparison Operators)
※ //
는 나눈 후, 나온 값보다 같거나 작은 최대 정수를 반환한다. MATLAB의 floor(/)
함수에 해당한다.
기능 | MATLAB(1) | PYTHON | C++ | F77, F90/95(2) |
---|---|---|---|---|
덧셈 | + | + | + | + |
뺄셈 | - | - | - | - |
곱셈 | * 및 .* | * | * | * |
나눗셈 | / 및 ./ | / | / | / |
지수 | ^ 및 .^ | pow(x, y) 또는 ** | pow(x, y) | ** |
나머지 | % | % | ||
증가분 | i += 1 | i++ | ||
감소분 | i -= 1 | i-- | ||
그룹 구분 | ( ) | ( ) | ( ) | ( ) |
(1) MATLAB에서는 연산자 앞의 ‘.
’는 요소별(또는 스칼라) 연산이 필요할 경우 사용한다.
(2) F90/95에서는 필요한 경우 새로운 연산자를 정의하여 사용할 수 있다.
(3) xy
는 함수로 표현되며, pow(x, y)
로 나타낸다.
+
연산자
# 덧셈 연산
a = 5
b = 3
result = a + b # result는 8이 된다.
# 문자열 연결(concatenation)
string1 = "Hello, "
string2 = "world!"
result = string1 + string2 # result는 "Hello, world!"가 된다.
# 두 시퀀스를 이어붙인 새로운 객체 생성
list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = list1 + list2 # result는 [1, 2, 3, 4, 5, 6]이 된다.
# '+' 연산자는 집합에 대해 지원되지 않음
# 집합의 병합에는 union() 메서드 또는 | 연산자를 사용할 것
set1 = {1, 2, 3}
set2 = {3, 4, 5}
result = set1 + set2 # 오류 발생
+
연산자는 동일한 자료형 간에만 사용할 수 있으며, 서로 다른 자료형 간에는 지원되지 않는다.
예를 들어, 정수형과 문자열을 +
로 연결하려 할 경우에는 TypeError
가 발생한다.
이러한 경우에는 자료형을 명시적으로 변환한 후 연산을 수행해야 한다.
비교 연산자는 두 피연산자의 관계를 비교하여 논리값 True
또는 False
를 반환한다.
조건문이나 반복문 등에서 자주 활용되며, 연산의 결과는 항상 불리언(boolean) 값이다.
a = 10
b = 5
print(a > b) # True: a가 b보다 크다
print(a < b) # False: a가 b보다 작다
print(a == b) # False: a와 b가 같다
print(a != b) # True: a와 b가 같지 않다
print(a >= b) # True: a가 b보다 크거나 같다
print(a <= b) # False: a가 b보다 작거나 같다
논리 연산자는 불리언 연산을 수행하며, 조건을 결합하거나 부정하는 데 사용된다.
and
, or
, not
세 가지 연산자가 존재하며, 복합 조건을 평가할 때 널리 사용된다.
x = True
y = False
print(x and y) # False: 둘 다 True일 때만 True
print(x or y) # True: 둘 중 하나라도 True이면 True
print(not x) # False: x가 True이면 not x는 False
논리 연산자는 조건문과 결합하여 복잡한 판단을 수행할 수 있도록 하며, 다른 비교 연산자와 함께 자주 활용된다.
기능 | MATLAB | PYTHON | C++ | F90/95 | F77 |
---|---|---|---|---|---|
Equal to (같음) | == | == | == | == | .EQ. |
Not equal to (같지 않음) | ~= | != | != | /= | .NE. |
Less than (보다 작음) | < | < | < | < | .LT. |
Less than or equal to (작거나 같음) | <= | <= | <= | <= | .LE. |
Greater than (보다 큼) | > | > | > | > | .GT. |
Greater than or equal to (크거나 같음) | >= | >= | >= | >= | .GE. |
Logical NOT (부정) | ~ | not | ! | .NOT. | .NOT. |
Logical AND (논리곱) | && | and | && | .AND. | .AND. |
Logical inclusive OR (논리합) | || | or | || | .OR. | .OR. |
Logical exclusive OR (배타적 논리합) | xor | ^ | .XOR. | .XOR. | |
Logical equivalent (논리적 동치) | == | == | == | .EQV. | .EQV. |
Logical not equivalent (논리적 비동치) | ~= | != | != | .NEQV. | .NEQV. |
(1) Bit logical AND, exclusive OR, OR, NOT에 대해서는 &
, ^
, |
, ~
연산자를 사용한다.
비트 연산자는 정수의 이진 표현을 기준으로 각 비트 단위 연산을 수행한다. 다음과 같은 연산자가 존재한다:
&
: 비트 AND|
: 비트 OR~
: 비트 NOT^
: 비트 XOR (배타적 논리합)>>
: 오른쪽 시프트<<
: 왼쪽 시프트
할당 연산자는 변수에 값을 대입하거나 기존 변수의 값을 연산하여 갱신하는 데 사용된다.
기본적인 할당 연산자인 =
외에도, 다양한 축약형 연산자가 존재한다.
연산자 | 예 |
---|---|
= |
a = b |
+= |
a += b 는 a = a + b 를 의미함 |
-= |
a -= b 는 a = a - b 를 의미함 |
*= |
a *= b 는 a = a * b 를 의미함 |
/= |
a /= b 는 a = a / b 를 의미함 |
%= |
a %= b 는 a = a % b 를 의미함 |
//= |
a //= b 는 a = a // b 를 의미함 |
**= |
a **= b 는 a = a ** b 를 의미함 |
:
)
콜론 연산자 :
는 배열이나 시퀀스 자료형에서 범위를 지정하거나, 슬라이싱(slicing) 구문을 표현하는 데 사용된다.
Fortran(F90/95), MATLAB, Python 등 다양한 언어에서 활용되며, 언어에 따라 사용 범위와 문법이 다소 상이하다.
구문 | F90/95 | MATLAB/PYTHON | 용법 | F90/95 | MATLAB/PYTHON |
---|---|---|---|---|---|
기본 형식 | B:E:I(1) | B:I:E | 1. 배열 요소 위치 | 사용 가능 | 사용 가능 |
≥ B | B: | B: | 2. 문자열에서 문자 위치 | 사용 가능 | 사용 가능 |
≤ E | :E | :E | 3. 반복문 제어 | 사용 불가 | 사용 가능 |
전체 영역 | : | : 또는 ... (생략기호)(3) | 4. 배열 요소 생성 | 사용 불가 | 사용 가능 |
마지막 인덱스 | - | -1(2) | 사용 불가 | 사용 가능 |
(1) B = 시작값(beginning), E = 끝값(ending), I = 증분값(increment)
(2) 배열의 마지막 인덱스: Python에서는 -1
을 사용할 수 있다.
예시:
c = array([[1, 2, 3], [4, 5, 6]])
c[-1, :] # 결과: array([4, 5, 6])
c[:, -1] # 결과: array([3, 6])
(3) 생략기호(Ellipsis): 배열의 전체를 나타낼 때 Python에서는 ...
을 사용할 수 있다.
c = array([[1, 2, 3], [4, 5, 6]])
c[...] # 결과: array([[1, 2, 3], [4, 5, 6]])
파이썬에서는 다음과 같은 특수 연산자를 제공한다. 이들은 객체 간의 관계나 포함 여부 등을 판단하는 데 사용된다.
is
: 두 객체가 동일한 객체임을 판단함is not
: 두 객체가 동일하지 않음을 판단함in
: 특정 요소가 시퀀스(리스트, 튜플, 문자열 등)에 포함되어 있는지를 판단함not in
: 특정 요소가 시퀀스에 포함되어 있지 않은지를 판단함@
)
파이썬의 @
연산자는 2차원 배열(Numpy 배열 등) 간의 행렬 곱을 수행하는 데 사용된다.
이 연산자는 파이썬 3.5부터 도입되었으며, numpy.dot()
또는 matmul()
함수와 같은 기능을 수행한다.
# 예시: 행렬 곱
>>> c = array([[1, 2, 3],
[4, 5, 6]])
>>> b = c
>>> c @ b.T
Out[19]:
array([[14, 32],
[32, 77]])
# 역슬래시를 사용하여 여러 줄로 분리
a = 1 + 2 + 3 + \
4 + 5 + 6 + \
7 + 8 + 9
# 소괄호 사용
a = (1 + 2 + 3 +
4 + 5 + 6 +
7 + 8 + 9)
# 리스트를 여러 줄로 작성
my_list = [
1, 2, 3,
4, 5, 6
]
# 딕셔너리를 여러 줄로 작성
my_dict = {
"name": "Alice",
"age": 30
}
# 세미콜론을 사용하여 여러 구문을 한 줄에 작성
a = 1; b = 2; c = a + b
# 함수 호출
print("Hello")
# 수식 우선순위를 명확히 하기
result = (2 + 3) * 4
# 튜플 생성
my_tuple = (1, 2, 3)
# 여러 줄 표현 시 사용
total = (
1 + 2 + 3 +
4 + 5 + 6
)
# 딕셔너리 생성
person = {"name": "Alice", "age": 30}
# 집합 생성
unique_numbers = {1, 2, 3, 2}
# f-string 표현식에 변수 삽입
name = "Bob"
greeting = f"Hello, {name}!"
# 리스트 생성
fruits = ["apple", "banana", "cherry"]
# 리스트 인덱싱
first_fruit = fruits[0]
# 리스트 슬라이싱
some_fruits = fruits[0:2]
# 리스트 컴프리헨션
squares = [x**2 for x in range(5)]