리스트 내장

Programming/Python 2013. 2. 13. 00:33 |

리스트 내장(List Comprehension) 을 이용하여 0부터 9까지의 제곱의 리스트 만들기

L = [k * k for in k range(10)]

파이썬은 리스트를 대단히 유용하게 활용하는데 리스트 내장은 리스트를 쉽게 만드는 데 유용하다.

이것은 다음과 같이 표현된 것이다.

L = []

for k in range(10):

L.append(K * k)


리스트 내장은 함수적 프로그래밍 언어 Haskell에서 따온 것이다.

[ expression for expr in sequence1

for expr in sequence2 ...

for expr in sequenceN

if condition ]

for ... in 절은 시퀀스를 반복한다. for 문으로 취해지는 각각의 값들은 expression에서 사용된다. 

마지막 if 절은 선택적이다. 존재한다면, expression은 condition이 참일 때만 값이 계산되고 결과에 추가된다.


리스트 내포는 다음의 파이썬 코드와 동등하다.

for expr1 in sequence1:

for expr2 in sequence2:

...

for exprN in sequenceN:

if (condition):

# 식의 값을 결과 리스트에 추가




두 시퀀스 자료형의 모든 자료의 조합 만들기


※ 리스트 내장 효과의 발생자

메모리를 점유하는 리스트를 생성하지 않으면서 리스트 내장 효과를 내는 것이 가능하다.

예를 들면 다음과 같은 코드가 가능하다

이 코드가 리스트 내장과 다른 점은 (x*x for x in range(10))가 발생자를 만든다는 점이다.

이 반복자는 새로운 리스트를 생성하지 않으면서 합 계산에 사용될 수 있다.

리스트 내장보다 효과적인 이유는 중간의 리스트를 생성해 내지 않는 데 있다.


즉, 리스트 내장의 경우 다음과 같이 코딩한다.

sum([x*x for x in range(10)])

생성된 리스트에 대한 sum을 계산한다.


'Programming > Python' 카테고리의 다른 글

명령행 옵션 처리  (0) 2013.02.13
특정 문자열 없애기  (0) 2013.02.13
Python의 리스트 자료형으로 Stack, Queue 쓰기  (0) 2013.02.12
리스트  (0) 2013.02.12
문장에서 각 단어의 횟수 세기  (0) 2013.02.12
Posted by scii
: