[02. 문법] 2.3 제어문 - if, for, while, break, continue, 한 줄 list comprehesion(리포함수)
작성자 : k2k
(2023-02-19)
조회수 : 1727
[참조]
- 공학자를 위한 Python, 조정래, 2022: 2.2 제어문
https://wikidocs.net/14596 - Dookie Kim, Python: From Beginning to Application, 2022
https://www.dropbox.com/s/oa86j9ap62esmtz/Python.pdf?dl=0
다른 프로그래밍 언어와 같이 파이썬에도 if, for, while 등의 제어문이 있으며, break, continue 의 키워드도 동일하다.
(1) 조건문: if
(2) 반복문: for, while
(3) break, continue
(4) List Comprehension 리스트 컴프리헨션
조건설정 다음에 콜론(:)을 찍어준다.
명령구문들은 들여쓰기를 한다.
(1) 조건문: if
- 조건을 판단하여 해당 조건에 맞는 상황을 수행하는 데 사용한다.
- 파이썬에는 switch/case 문이 없으므로, if 문으로 작성한다.
-
Ex 1)
if a > 0:
print(a) # a가 0보다 큰 경우 a를 출력한다.
else:
print(b) # a가 0보다 크지 않은 경우 b를 출력한다.
-
Ex 2)
if x < 0:
print('negative') # x가 0보다 작은 경우 negative를 출력한다.
elif x < 10:
print('0<=x<10') # x가 0보다 크거나 같고 10보다 작은 경우 0<=x<10를 출력한다.
else:
print('x>=10') # x가 10보다 크거나 같은 경우 x>=10를 출력한다.
삼항연산자(ternary operator)
간단한 조건물을 한 줄로 표현할 수 있음
status = "성인" if age >= 18 else "미성년자"
# result = value_if_true if condition else value_if_false
(2) 반복문: for, while
- 명령이 반복되는 경우에 사용한다.
- for문은 for [변수] in [문자열, 리스트, 튜플]: 부분을 통해 새로운 변수를 만든다.
- while문은 while [조건문]: 부분을 통해 변수의 True/False 여부를 판단할 뿐, 새로운 변수를 만들 수 없다.
-
Ex 1) range() 사용
for i in range(10):
print(i) # range(10)은 0,1,2,3,4,5,6,7,8,9 숫자를 생성한다.
결과)
0
1
2
3
4
5
6
7
8
9
-
Ex 2) list 데이터 타입의 사용
xdata = [0.1,4,3]
for x in xdata:
print(x)
결과)
0.1
4
3
-
Ex 3) 인덱스와 리스트 멤버 동시 접근 : enumerate(list) 사용
items = [9,5,4,10]
for idx, val in enumerate(items):
print(idx, val) # enumerate(items)는 (인덱스,객체)인 [(0,9), (1,5), (2,4), (3,10)]를 생성한다.
결과)
0 9
1 5
2 4
3 10
-
Ex 4) while (무한)반복문
while True:
key = input()
if key == 'x':
break # x가 입력되면 while 반복문을 깨고 나온다.
print(key)
(3) break, continue
- break는 특정 조건일때 아예 반복문을 깨고 나오게 한다.
- continue문은 어떤 조건일때 반복문 안에 명시된 구문을 건너뛴다.
-
Ex 1) break
for val in "string":
if val == "i":
break # s, t, r 까지 출력한 후, i가 되면 for 반복문을 깨고 나온다.
print(val)
결과)
s
t
r
-
Ex 2) continue
for val in "string":
if val == "i":
continue # s, t, r 까지 출력한 후, i가 되면 반복문을 건너 뛰고, n, g를 출력한다.
print(val)
결과)
s
t
r
n
g
(4) List Comprehension 리스트 컴프리헨션(리포함수)
여기서 Comprehension이란 '이해'라기 보다는 '포함'이란 뜻을 갖는다.
파이썬의 강력하고 간결한 문법 기능
기존 리스트를 기반으로 특정 조건에 맞는 새로운 리스트를 생성할 수 있다.
장점: 1. 코드가 간결, 2. for문보다 빠름, 3. 함수형 프로그래밍 스타일 적용 가능
1. 간단한 리스트 생성:
squares = [x**2 for x in range(10)]
# 결과: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
K_elements = [beam_stiffness_matrix(E, I, element_length) for _ in range(num_elements)
# _ 은 변수가 없을 때 사용]
2. 조건부 리스트 생성:
even_squares = [x**2 for x in range(10) if x % 2 == 0]
# 결과: [0, 4, 16, 36, 64]
3. 2차원 리스트
matrix = [[i*j for j in range(1, 4)] for i in range(1, 4)]
# 결과: [[1, 2, 3], [2, 4, 6], [3, 6, 9]]