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]
지혜의 개발공부로그