기존 리스트를 간결하게 사용하는 것
반복문을 한 줄에 사용할 수 있고, 조건문도 같이 사용 가능
일반적인 사용 방법
[변수 for 변수 in 반복 가능한 객체]
res = [i for i in range(10)]
# 리스트 컴프리헨션을 사용하지 않고 일반 for문을 사용할 경우
res = []
for i in range(10):
res.append(i)
--> [0,1,2,3,4,5,6,7,8,9,10]
--> [0,1,2,3,4,5,6,7,8,9,10]
조건문에서의 사용 방법
[변수 for 변수 in 반복 가능한 객체 if 조건]
[변수if 조건 else 조건 만족하지 않을 때 값 for 변수 in 반복 가능한 객체]
조건문에서 if문만 사용할 경우 오른쪽에 써주지만, if else사용할 경우 왼쪽에 사용을 해준다.
# 1. if문
# 0~9까지 짝수만 필터링한 리스트
res = [i for i range(10) if i % 2 == 0]
-> [0,2,4,6,8]
# 2. else문 함께 사용
# 조건을 만족하지 않을 때
res = [i if i % 2 == 0 else 10 for i in range(10)]
-> [0,10,2,10,4,10,6,10,8,10]
다중 for문에서 사용 방법
res = [i*j for i in range(2,10) for j in range(1,10)]
res
>> [2,4,6,8,10.....81]
다중 for문 + 조건문 사용 방법
res = [i*j for i in range(2,10) for j in range(1,10) if i % 2==0]
res
>> [2,4,6,8,...72]
하지만, 리스트 컴프리헨션은 단순한 경우에만 사용하는 것이 좋음
코드 가독성을 위해서는 복잡한 경우, 리스트 컴프리헨션을 사용하는 것보다 여러 줄로 사용하는 것이 더 나을 수 있음
위에서 다중 for문, 다중for문 + 조건문 부분을 일반적인 구문으로 나타냈을 경우
# 이중 for문
lst = []
for i in range(1,10):
for j in range(2,10):
lst.append(i*j)
# 이중 for문 + 조건문
lst = []
for i in range(1,10):
for j in range(2,10):
if i % 2 == 0:
lst.append(i*j)
개인적으로는 다중 for문의 경우 리스트컴프리헨션보다 일반적으로 이중 for문을 쓰는게 가독성이 더 좋은 것 같다.
특히 조건까지 붙어있다면 더더욱
'python' 카테고리의 다른 글
[python]google-play-scraper: 구글 플레이스토어, app-store-scraper: 애플 앱스토어 앱리뷰 크롤링 (0) | 2023.03.08 |
---|---|
[python]스택(stack) (0) | 2023.03.07 |
[python]투포인터 (1) | 2023.01.07 |
[python]리스트(List) (3) | 2023.01.05 |
[python]문자열 포멧팅 출력 (0) | 2023.01.05 |