python 제어문(if), list-comprehension
20 May 2018 | python if-else elif list-comprehension패스트캠퍼스 웹 프로그래밍 수업을 듣고 중요한 내용을 정리했습니다.
개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
이 포스팅에서는python
제어문에 대해 설명합니다.
제어문 (if, else, elif)
if
와 else
는 조건이 참인지, 거짓인지 판단하는 파이썬 선언문
이며, elif
는 else내 if를 중첩해야할 때 사용한다.
# 기본적으로 if와 else는 이런 방식으로 쓰이고
if 조건:
조건이 참일 경우
else:
조건이 거짓일 경우
# 아래와 같이 if-else구문내 또 if-else구문이 중첩되어 사용되는 경우
if 조건1:
조건1이 참일 경우
else:
조건1이 거짓일 경우
if 조건2:
조건1은 거짓이나, 조건2는 참일 경우
else:
조건1,2가 모두 거짓일 경우
# 아래와 같이 elif를 사용하여 쓸 수 있다.
if 조건1:
조건1이 참일 경우
elif 조건2:
조건1은 거짓이나, 조건2가 참일 경우
else:
조건1,2가 모두 거짓일 경우
조건 표현식
참일경우 if 조건식 else 거짓일 경우
is_holiday
에True
또는False
값을 할당한 후,if
문과조건표현식
을 사용해서 각각 ‘Good’과 ‘Bad’를 출력하는 코드를 짜본다.
is_holiday = False
# if문을 사용한 것
if is_holiday:
print('good')
else:
print('bad')
# 조건표현식을 사용한 것
'good' if is_holiday else 'bad'
중첩 조건표현식
# 조건이 2개일 경우
조건1이 참일경우 if 조건1 else 조건1은 거짓이나 조건2가 참일경우 if 조건2 else 조건1,2가 모두 거짓일 경우
vacation
에 1에서 10중 아무 값이나 할당 후,if, elif, else
문과중첩 조건표현식
을 사용해서 각각vacation
이 7이상이면 ‘Good’, 5이상이면 ‘Normal’, 그 이하면 ‘Bad’를 출력하는 코드를 짜본다.
vacition = 8
# if, elif, else를 사용한 것
if vacation >= 7 :
pring('good')
elif vacation >= 5 :
print('nomarl')
else:
print('bad')
# 중첩 조건표현식을 사용한 것
'good' if vacation >=7 else 'normal' if vacation >=5 else 'bad'
for문 (조건에 따른 순회)
기본 형태
for 항목 in 순회가능(iterable)객체:
<항목을 사용한 코드>
중첩
for문 안에 for문을 사용할 수 있다.
for 항목1 in iterable객체1:
iterable객체1을 순회하며 실행할 코드
for 항목2 in iterable객체2:
iterable객체1 내부에서 새로운 iterable객체2를 순회하며 실행할 코드
중단하기 (break)
데이터를 순회하던 중, 특정 조건에서 순회를 멈추고 반복문을 빠져나갈 떄 사용한다.
for 항목 in iterable객체:
(반복문을 중단하고 싶을때)break
위와 같이 중간(break)를 확인하고 싶을 때 else
를 사용한다.
for 항목 in iterable객체:
pass
else:
break가 한 번도 호출되지 않았을 경우의 코드
만약 for
문이 break
됐다면 else
문이 실행됐을 것이다.
건너뛰기 (continue)
데이터를 순회하던 중, 반복문을 중단하지 않고 다음 반복으로 건너뛸 때 사용한다.
for 항목 in iterable객체:
(현재의 반복을 중간에 그만두고 다음 반복으로 건너뛰고 싶을 때)continue
숫자 시퀀스 생성 (range)
range()
함수는 특정 범위의 숫자 스트림 데이터를 반환한다.
range(start, stop, step)
>>> for x in range(0, 10):
# 0 부터 10까지 순회하라
... print(x)
...
0
1
2
3
4
5
6
7
8
9
while문 (반복문)
if문과 유사하나, while문 뒤의 조건이 참일 경우 계속해서 반복한다.
while 조건:
조건이 참일경우 실행
조건이 거짓이 될 경우까지 계속해서 반복
예로 들어
>>> count = 0
>>> while count < 10:
... print(count)
... count += 1
...
0
1
2
3
4
5
6
7
8
9
컴프리헨션 (comprehension)
함축 또는 내포
일반적인 for문을 사용하는 때보다 훨씬 간편하다.
그러나 조건이 2개 이상이 되는 경우에는 일반적인 for문을 사용하는게 옳다.
리스트 컴프리헨션
[표현식 for 항목 in iterable객체]
- [1,2,3,4,5]를 만드는 방법
# 리스트 컴프리헨션을 사용한 경우
[i for i in range(1, 6)]
# range와 for문을 사용한 경우
for i in range(1, 6):
print(i)
- 만약 각 i에 2배의 값을 할당하고 싶다면?
[i*2 for i in range(1,6)]
- 만약 1~5중 짝수만 해당하는 리스트를 만들고 싶다면?
[i for i in range(1,6) if i % 2==0]
리스트 컴프리헨션의 중첩
for color in colors:
for fruit in fruits:
[(color, fruit) for color in colors for fruit in fruits]
셋 컴프리헨션
{표현식 for 표현식 in iterable객체}
실습
1.for문
을 2개 중첩하여 (0,0), (0,1), (0,2), (0,3), (1,0), (1,1)….. (6,3)까지 출력되는 반복문을 구현한다.
for i in range(0,8):
for j in range(0,4):
print((i,j))
2.리스트 컴프리헨션을 중첩하여 위 결과를 갖는 리스트를 생성한다
[(i,j) for i in range(0,7) for j in range(0,4)]
3.1, 2번의 반복문에서 1번은 튜플의 첫 번째 항목이 짝수일때만 출력하도록, 2번은 첫 번째 항목이 짝수일때만 리스트의 원소로 추가한다.
for i in range(0,8):
for j in range(0,4):
if i % 2 == 0:
print((i,j))
[(i,j) for i in range(0,7) for j in range(0,4) if i % 2 ==0]
4.1000에서 2000까지의 숫자 중, 홀수의 합을 구해본다.
result = 0
for i in range(1001, 2001, 2):
result += i
print(result)
5.리스트 컴프리헨션을 사용하여 구구단 결과를 갖는 리스트를 만들고, 해당 리스트를 for문을 사용해 구구단 형태로 나오도록 출력해본다. 각 단마다 한 번 더 줄바꿈을 넣어준다.
[(i*j) for i in range(1, 10) for j in range(1, 10)]
for i in range(1, 10):
for j in range(1, 10):
print(i*j)
6.1에서 99까지의 정수 중, 7의 배수이거나 9의 배수인 정수인 리스트를 생성한다. 단, 7의 배수이며 9의 배수인 수는 한 번만 추가되어야 한다.
result = []
for i in range(1, 100):
if i % 7 == 0 or i % 9 == 0:
result.append(i)
[i for i in range(1, 100) if i % 7 == 0 or i % 9 ==0]