[Python] List Comprehensions

Yerin·2020년 1월 3일
0

study-python

목록 보기
15/18

Python의 list comprehension을 쓰면 로직 구현도 용이해지고 코드를 볼 때 더 읽고 이해하기가 쉬워진다. 그렇다면 list comprehension 이란??

List comprehensions


  • 파이썬에서 리스트 만드는법.
  1. For loops

빈리스트를 선언하고, for문으로 범위 내에 객체를 반복해서 불러내고, 리스트에 값들 추가하는 식.

>>>squares = []

>>>for i in range(10):
		squares.append(i * i)

>>>squares
[0,1,4,9,16,25,36,49,64,81]
  1. map()

map 메소드 안에 함수와 객체를 넣으면 새로운 객체를 만든다.

txns = [1.09, 23.56]

TAX_RATE = 0.08

def get_price_with_tax(txn):
	return txn * (1 + TAX_RATE)
final_prices = map(get_price_with_tax, txns)
print(list(final_prices))

[1.17720000000000002, 25.4448]
  1. List comprehension

위의 첫번째 예시를 한줄로 쓸 수 있다.

squares = [i * i for i in range(10)]
print(squares)

[0,1,4,9,16,25,36,49,64,81]

빈 리스트를 선언하고 거기에 요소들을 추가하는 대신에 ,
리스트를 선언하고 그 안에 내용을 다음과 같이 한번에 쓸 수 있다.

new_list = expression for member in iterable

두번째 예시에서는 map 함수 대신 이렇게 써도 된다.
final_prices = [get_price_with_tax(i) for i in txns]

여기서 차이점은, list comprehension은 객체가 아닌 리스트를 반환한다는것.

How to Supercharge Your Comprehensions


조건이 추가되면 다음과 같이 쓸 수도 있다.
new_list = [expression for member in iterable (if conditional)]
조건을 추가하면 불필요한 값은 제거하고 원하는 값만 걸러낼 수 있다.
filter()의 역할이다.

sentence = ' the rocket came back from mars'
vowels = [ i for i in sentence if i in 'aeiou']
print(vowels)
['e', 'o','e','a','e','a','o','a']

만약 멤버 값을 바꾸고자 한다면 첫부분에 조건을 추가해도 된다.

new_list = [expression ( if conditional) for member in iterable ]

예를 들어, 음수를 0 으로 바꿔서 출력하고 싶은 예시가 있다면

original_prices = [1.25, -9.45, 10.22, 3.78, -5.92, 1.16]
prices = [ i if i>0 else 0 for i in original_prices]
print(prices)
[1.25, 0,  10.22, 3.78, 0, 1.16]

ref: https://realpython.com/list-comprehension-python/

profile
졸꾸 !!!

0개의 댓글