- for문, if문
[Python] for문(반복문), if문(조건문)
for문(반복문) 명령이 반복 될 수 있게 하는 문법 특정 조건을 만족할 때까지 반복하는 while과 달리 원하는 횟수, 범위만큼 반복한다. for문 기본 구조 for [변수명] in [문자열, 리스트, 튜플] : [반
young-library.tistory.com
컴프리헨션(Comprehension)
파이썬 컨테이너 자료형(리스트, 딕셔너리, 세트)에 데이터를 좀 더 쉽고 간결하게 담기 위한 문법
'반복문과 조건문을 결합하여 하나의 구문으로 만들어 담는 것'
리스트 컴프리헨션, 딕셔너리 컴프리헨션, 세트 컴프리헨션, 제너레이터 컴프리헨션이 있다.
컴프리헨션 기본 구조
리스트 컴프리헨션 : [반복 실행문 for 변수 in 순회 가능 객체(list, set, range() 등) +if문, for 사용 가능]
딕셔너리 컴프리헨션 : { 키 : 값 for 표현식 in 순회 가능 객체(list, set, range() 등) +if문, for 사용 가능}
세트 컴프리헨션 : { 반복 실행문 for 표현식 in 순회 가능 객체(list, set, range() 등 +if문, for 사용 가능}
장점
- 간결하다.
- for문보다 실행 속도가 빠르다.
단점
- 복잡하게 사용할 경우 가독성이 떨어진다. 따라서 복잡한 코드 경우 여러줄로 표시하는 것이 나을 때가 있다.
리스트 컴프리헨션(List Comprehension)
리스트 안에 for문과 if문(조건문)을 한 줄에 넣어서 새로운 리스트를 만드는 것
빈 리스트에 숫자를 저장하는 3가지 방법을 보자
① 하나씩 대입(append)
>>> nlist = [] # 리스트 생성
>>> nlist.append(1)
>>> nlist.append(2)
>>> nlist.append(3)
>>> nlist.append(4)
>>> nlist.append(5)
# 출력
>>> nlist
[1, 2, 3, 4, 5]
하지만 이 경우는 1-5까지지만 추가해야할 데이터가 커질 수록 반복적인 문장을 계속 사용해야하는 비효율적인 코드가 된다. 따라서 for문(반복문)을 사용하면 리스트에 숫자를 append 하는 문장을 한 번만 작성할 수 있다.
② for문 사용
>>> nlist = [] # 리스트 생성
>>> for i in range(1, 6):
nlist.append(i) # 리스트에 i 추가
# 출력
>>> nlist
[1, 2, 3, 4, 5]
③ 리스트 컴프리헨션 사용
리스트 생성(한 줄)부터 for문(두 줄)을 리스트 컴프리헨션을 사용하여 한 줄로 간단하게 리스트 생성할 수 있다.
>>> nlist = [i for i in range(1,6)]
# 출력
>>> nlist
[1, 2, 3, 4, 5]
for문과 if문을 함께 사용할 때 컴프리헨션을 사용하는 예시는 아래 3번에 있다.
1. for문
for문 기본 구조
for [변수명] in [문자열, 리스트, 튜플] :
[반복하여 실행할 명령]
- 기본 구조 for문 예제
>>> nlist = []
>>> for i in range(5):
nlist.append(i)
>>> nlist
[0, 1, 2, 3, 4]
- 한 줄 for문 예제
>>> nlist = [i for i in range(5)]
>>> nlist
[0, 1, 2, 3, 4]
- 이중 for문 예제
for i in range(1, 3):
for j in range(1, 9):
print(f'{i} * {j} = {i*j}')
# 출력
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
1 * 5 = 5
1 * 6 = 6
1 * 7 = 7
1 * 8 = 8
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
- 이중 for문 한 줄 예제
>>> m = [f'{i} * {j} = {i*j}' for i in range(1, 3) for j in range(1, 10)]
# m 출력
>>> print(*m, sep='\n')
# 출력
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
1 * 5 = 5
1 * 6 = 6
1 * 7 = 7
1 * 8 = 8
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2. if문
if-else문 기본 구조
if 조건식 :
조건이 참인 경우 수행할 문장
else : # else는 생략 가능하다.
조건이 거짓인 경우 수행할 문장
- 기존 if문
>>> a = 3
>>> if a == 3:
print('참')
# 출력
참
- 한 줄 if문
>>> a = 3
>>> if a == 3: print('참')
# 출력
참
- 기존 if-else문
>>> a = 3
>>> if a == 5:
print('참')
else :
print('거짓')
# 출력
거짓
- 한 줄 if-else문
>>> a = 3
>>> print('참' if a == 5 else '거짓')
# 출력
거짓
조건식이 2개 이상인 경우
- 기존 if문
nlist = [2, 4, 6, 8, 10, 12]
if 3 in nlist:
print('3포함')
elif 4 in nlist:
print('4포함')
else:
print('모두 없음')
# 출력
4포함
- 한 줄 if-elif-else문
nlist = [2, 4, 6, 8, 10, 12]
print('3포함' if 3 in nlist else '4포함' if 4 in nlist else '모두 없음')
# 출력
4포함
3. for문 + if문
- 기존 for문 + if문
>>> a = ['a', 'b', 'ab', 'c', 'aa', 'bc']
>>> b = []
# a리스트에서 문자 'a'가 포함되어 있는 문자열만 b리스트에 추가
>>> for i in a:
if 'a' in i:
b.append(i)
# 출력
>>> b
['a', 'ab', 'aa']
- 리스트 컴프리헨션(for문 + if문)
>>> a = ['a', 'b', 'ab', 'c', 'aa', 'bc']
>>> b = [i for i in a if 'a' in i] # 리스트 컴프리헨션(for문 + if문)
# 출력
>>> b
['a', 'ab', 'aa']
'Study > Python study' 카테고리의 다른 글
[Python(파이썬)] globals, locals, 변수명 지정 자동화 (0) | 2023.03.14 |
---|---|
[Python(파이썬)] for문(반복문), if문(조건문) (0) | 2022.03.10 |
[Python(파이썬)] 파이썬 공백 제거 (strip, replace) (0) | 2021.12.01 |
[Python(파이썬)] 이차원 리스트 입력 받기 (0) | 2021.12.01 |
[Python(파이썬)] 다양하게 입력받기 [input(), sys.stdin.readline(), strip()] (0) | 2021.12.01 |
댓글