[python] list comprehension

J·2021년 1월 27일
0

python

목록 보기
4/11

list comprehension

comprehension의 사전적 정의는 '이해력', '이해력 연습' 이라고 하는데 list comprehension은 의역하면 고급진 list 활용정도로 의역하면 좋을 것 같다. Comprehension이란 iterable한 오브젝트를 생성하기 위한 방법중 하나로 파이썬에서 사용할 수 있는 유용한 기능중 하나이다.
어떤 list를 만들려고 할 때 적어야하는 코드의 수를 줄여주고, 가독성도 좋아지는 효과가 있다.
예를 들면 1~10 까지의 원소를 가지는 list를 만든다고 하면 예전에는 아래와 같이 생성을 했을 것이다.

mylist = []
for i in range(1,11):
	mylist.append(i)
#result
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

하지만 comprehension을 배우고 난 후에는 아래와 같이 쓸 수 있다.

mylist = [i for i in range(1,11)]
# result
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

조금 더 복잡하게 조건문을 넣어줄 수 도 있다.
위와 같이 1~10 범위의 정수 중 짝수만 2를 곱하여 list의 원소로 생성하는 예제이다.

mylist = [i*2 for i in range(1,11) if i % 2 == 0]
# result
[4, 8, 12, 16, 20]

set, dictionary, generator에도 응용할 수 있다.

set comprehension

myset = {i in range(1,11)}
# result
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

dictionary comprehension

foods = ['chicken', 'pizza', 'sushi', 'rice']
scores = [90, 80, 95, 100]
mydict = {key: value for key, value in zip(foods, scores)}
# result
{'chicken': 90, 'pizza': 80, 'sushi': 95, 'rice': 100}

generator comprehension

gen = (i for i in range(10,1,-1))
print(next(gen))
print(next(gen))
print(next(gen))

# result
10
9
8

출처

  1. https://programmers.co.kr/learn/courses/4008/lessons/48464
  2. https://mingrammer.com/introduce-comprehension-of-python/
  3. https://shoark7.github.io/programming/python/about-list-comprehension-python
profile
I'm interested in processing video&images with deeplearning and solving problem in our lives.

0개의 댓글