객체 지향 프로그래밍/Python

리스트 컴프리헨션으로 가독성 높이기

ghtis1798 2021. 3. 13. 12:31

📌for문 대체하기

리스트를 정의할 때 for 루프를 대체하는 방식이다.

리스트에 1부터 100까지 for문으로 서넌

list1 = []
for i in range(1, 101):
    list1.append(i)

벌써 3줄이나 사용해야 한다.

리스트 컴프리헨션은 이를 대체할 수 있는 방법이다.

list1 = [x for x in range(1,101)]

리스트 컴프리헨션을 더 쉽게 이해한 방법은 뒤의 for문을 먼저 작성하는 것이다.

x를 1부터 100까지 loop를 돌고, 그 때마다 x를 리스트 요소에 추가한다.

if문이 들어간 리스트 컴프리 헨션도 같은 방식이다.

📌if문 포함

만약 1부터 100까지 짝수만 리스트에 추가하고 싶을 땐 어떨까?

list1 = [x for x in range(1,101) if x%2 == 0]

if문이 포함된 경우도 뒤의 for문을 먼저 작성한 뒤 if문을 작성하고 앞에 x를 적는다.

위의 과정으로 몇 번 연습해보니 금방 감이 왔다.

  1. for문 작성하기
  2. 뒤의 if문 작성하기
  3. 리스트 요소에 x 추가하기

📌2중 for문

2중 for문도 똑같은 방식으로 접근하니 이해가 빨랐다.

  1. for문 작성하기
  2. 2중 for문 작성하기
  3. if문 작성하기
  4. 리스트 요소에 x 추가하기
list1 = [x*y for x in range(1,11) for y in range(1,11) if y % 2 == 0]

📌Set 컴프리헨션

set1 = {x for x in range(1,11)}
set2 = {x for x in range(1,11) if x%2==1}
print(set1) # {1,2,3,4,5,6,7,8,9,10}
print(set2) # {1,3,5,7,9}