[python] list comprehension

Jay·2020년 2월 8일
0

list comprehension

풀어서 쓰면 리스트 표현식 이라는 뜻이다. 처음에 봤을 때는 이해하기 어려웠지만, 알고나니 직관적인 표현방법이라는 생각이 든다. 간단하게 리스트를 생성할 수 있는 방법이다.

aList = [i for i in range(1,11)]
-
> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

끊어읽기를 하면 한번에 이해할 수 있다. aList = [i / for i in range(1,11)] i 뒤의 슬래시를 기준으로 뒤 부터 읽어보면, 1부터 11까지의 범위에 있는 정수를 순서대로 도출해 aList라고 명시된 리스트에 하나씩 넣는다는 뜻이다.

아래와 같은 방식으로 튜플도, 리스트도(list())생성 가능하다. (하지만 튜플은 위의 예시처럼 괄호로 감싸는 방식으로는 표현할 수 없다. 튜플이 아니라 제너레이터 표현식이 된다.)

bList = tuple(i for i in range(1,11))
-
print(bList)
> (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

if문과 함께 쓸 수도 있다.

cList = list(i for i in range(1,101) if i % 3 == 0)  #case1
cList = []
for i in range(1,101):
	  if i % 3 == 0:
	    cList.append(i)  #case2
-
print(cList)
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

case1과 case2는 같은 결과를 도출해내지만, 코드가 차지하는 줄은 4배 차이가 난다.

for문과 if문을 여러 개 쓸 수도 있다.

dList = list(i*j for i in range(2,3) for j in range(1, 10))
print(dList)
> [2, 4, 6, 8, 10, 12, 14, 16, 18]

for문을 중첩해서 구구단 2단을 출력했다. 위의 예시처럼 for문이나 if문을 옆으로 계속 추가하면 된다.

list comprehension 으로 2차원 리스트 구현하기

eList = [[2*i + j + 1 for j in range(2)]for i in range(3)]
print(eList)
> [[1, 2], [3, 4], [5, 6]]

코드의 뒤에서 앞으로 읽으면 된다.

profile
You're not a computer, you're a tiny stone in a beautiful mosaic

0개의 댓글