본문 바로가기

python

리스트 컴프리핸션

먼저 리스트를 생성하는 기본 방법들이 있다

r1 = [1, 2, 3]
r2 = []
r3 = [1, 2, [3, 4]]

[1, 2, 3, 4, 5]의 모든 값을 두 배씩 증가시킨 값을 지니는 리스트를 만들어라.

r1 = [1, 2, 3, 4, 5]
r2 = []
for i in r1:
	r2.append(i*2)  # 두 배씩 증가시켜서 리스트 r2에 저장

r2
-> [2, 4, 6, 8, 10]

위의 코드를 for루프를 사용하지 않는 형태로 대신할 수 있다.

리스트 컴프리핸션

r1 = [1, 2, 3, 4, 5]
r2 = [x * 2 for x in r1]  # 리스트 컴프라핸션의 기본 구조

r2
-> [2, 4, 6, 8, 10]

위의 코드를 해석해보면 r1의 값들을 하나씩 x에 넣고, x * 2의 결과를 만들어 리스트에 저장한다.

조건 필터 추가하기

r1 = [1, 2, 3, 4, 5]
r2 = []
for i in r1:
	if i % 2:         # i가 홀수인 경우
		r2.append( i * 2)    # i * 2의 결과를 리스트에 담는다.

r2
=> [2, 6, 10]

위의 코드를 리스트 컴프리핸션을 기반으로 간단하게 작성할 수 있다.

r1 = [1, 2, 3, 4, 5]
r2 = [x * 2 for x in r1 if x % 2]  # if절이 추가된 리스트 컴프리핸션

r2
=> [2, 6, 10]

리스트 컴프리핸션에 for문이 한번 더 들어가는 경우

r1 = ['Black', 'White']
r2 = ['Red', 'Blue', 'Green']
r3 = []
for i in r1:
	for j in r2:
		r3.append(t + p)

r3
=> ['BlackRed', 'BlackBlue', 'BlackGreen', 'WhiteRed', 'WhiteBlue', 'WhiteGreen']

위의 코드를 리스트 컴프리핸션을 기반으로 간단하게 작성할 수 있다.

r3 = [t + p for i in r1 for j in r2]

구구단 같은 경우도 리스트 컴프리핸현을 이용하면 간단하게 작성할 수 있다.

r = [i * j for i in range(2, 10) for j in range(1, 10)]

이중 for문에 조건 필터 추가

구구단 결과 중에서 짝수인 값들만 리스트에 추가시키자.

r = [i * j for i in range(2, 10) for j in range(1, 10) if (i * j) % 2]

'python' 카테고리의 다른 글

파이썬의 메모리 관리  (0) 2022.04.06
제너레이터 함수  (0) 2022.03.06
리스트 컴프리헨션(2)  (0) 2022.03.02
map과 filter  (0) 2022.03.01
Iterable 객체와 Iterator 객체  (0) 2022.01.24