728x90
리스트 내포(List Comprehension)
파이썬에서는 for문과 if문을 한 라인에 작성하여 코드를 간결하고 직관적으로 만들며, 실행속도를 높혀주는 기법인 리스트 내포 기법이 존재한다. 형태는 다음과 같다.
리스트 명 = [표현식 for 변수 in 반복 가능한 대상]
예를 들면 다음과 같다.
list = [i for i in range(20)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
이렇게 하면, 0부터 19까지의 수가 리스트로 변환되게 된다.
처음에도 말했듯, 리스트 내포는 for문과 if문을 한 라인에 작성할 수 있다.
조건을 추가했을 떄의 형태는 다음과 같다.
리스트 명 = [표현식 for 변수 in 반복 가능한 대상 if 조건문]
이번엔 if문을 통해 리스트 내포에 조건을 추가해보자,
list = [i for i in range(20) if i % 3 == 0]
[3, 6, 9, 12, 15, 18]
뒤에 i % 3 == 0이라는 조건이 붙었으므로 1~19사이의 3의 배수가 리스트에 들어가게 된다.
리스트 내포 활용
구구단 프로그램을 짠다고 생각해보자.
for문을 사용한다면 다음과 같을 것이다.
result = []
for i in range(1, 10):
for j in range(1, 10):
result.append(i * j)
이를 리스트 내포 기법을 사용하면 다음과 같이 정리 가능하다.
result = [i * j for i in range(1, 10) for j in range(1, 10)]
바깥쪽의 for문이 먼저 쓰이고, 안쪽의 for문이 이후에 쓰인다.
순서대로 리스트 안에서 사용하면 되는 것이다.
이렇게 for문이 두개 이상 일 때 조건을 어떻게 추가해야할까?
홀수단만 계산하는 구구단을 for문을 이용해서 만들어보자.
result = []
for i in range(1, 10):
if i % 2 == 1:
for j in range(1, 10):
result.append(i * j)
이제 이 코드를 리스트 내포 기법으로 변환할 것이다.
위에서도 말했듯 순서대로 리스트 안에 사용하면 된다.
for문 다음 if문, 후에 또 for문의 형식이 된다.
result = [i * j for i in range(1, 10) if i % 2 == 1 for j in range(1, 10)]
728x90
'Programming > Pyhton' 카테고리의 다른 글
파이썬: 파일 입출력, with문 (0) | 2022.08.01 |
---|---|
파이썬: 함수(Function) (0) | 2022.07.28 |
파이썬: 반복문(for문, while문) (0) | 2022.07.27 |
파이썬: 조건문(if, elif, else) (0) | 2022.07.26 |
파이썬: 딕셔너리(dictionary), 셋(set) (0) | 2022.07.22 |
댓글