파이써닉(Pythonic) Code #3 리스트 comprehensions

파이써닉 코드에 대해서 #1에 이어서 계속 살펴보고 있습니다. 오늘은 정말 많이 사용하는 리스트 Comprehensions에 대해 살펴보려고 해요. 가장 많이 사용하는 파이써닉 코드이지만, 그 만큼 까다롭기도 합니다. 한 번 어찌어찌해서 이해가 됐어도, 시간이 지나면 원리가 뭐였더라…하는 그런 구조적인 문법입니다. 장점이라고 하면…음… for + append보다 속도가 빠른 거?

만드는 방법은 아래 리스트 Comprehensions를 사용했을 경우와 그렇지 않은 경우의 차이를 보시면 금방 아실 수 있습니다. 겉보기에는 간단하지만 그래도 연습을 꽤 해야 실전에서 사용할 수 있습니다.

리스트를 한 번 만들어서 0~9를 출력해볼까요?

#리스트 만들기(0~9)

numbers = []
for i in range(10):
    numbers.append(i)

print(numbers)

#Output : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

파이썬 초급때 배웠던 것처럼 for문과 append함수를 사용해서 numbers라는 리스트에 0~9까지 차례로 넣어줬습니다. 그러면 리스트 Comprehensions를 사용해서 똑같은 결과를 만들어보겠습니다.

#리스트 Comprehensions를 사용해서 리스트 만들기(0~9)

numbers = [i for i in range(10)]
print(numbers)

#Output : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

우리가 이제 알 수 있는 것! 리스트 Comprehensions를 사용하게 되면, 코드가 줄어드는 구나~라고 확실히 알 수 있습니다. 위와 같이 아주 간단한 코딩일 경우에는 크게 와닿지 않을 수 있지만 코드가 길어질 수록 리스트 Comprehensions를 사용하게 되면 상당히 많은 코드가 줄어들 수 있습니다. 이번에는 리스트 Comprehensions에 필터(filter) 기능을 사용해보겠습니다.

#리스트 Comprehensions + 필터

numbers = [i for i in range(10) if i % 2 == 0 ]
print(numbers)

#Output : [0, 2, 4, 6, 8]

뒤에 ‘if i % 2 ==0’이라는 조건을 만들어줘서 필터링을 해줬습니다. 우선 한 줄로 효율적인 코딩이 가능하지만, 리스트 Comprehensions를 사용하게 되면 코드가 상당히 직관적이게 됩니다. 결론은 리스트 Comprehensions의 효율성 외에 또 다른 장점은 ‘직관적인 코딩’이 가능하다는 점입니다. 실무에서는 그래서 가장 많이 사용하는 ‘파이써닉 코드’라고 볼 수 있습니다. 리스트 Comprehension을 다양하게 활용해서 사용할 수 있지만 오늘은 기본 개념만을 설명드렸습니다. 앞으로 저희가 살펴볼 다양한 예제에서 많이 나올 예정이니, 그때 리스트 Comprehension의 활용법을 하나씩 추가적으로 배워보도록 하겠습니다.

More from author

Related posts

60코딩 커뮤니티spot_img

Latest posts

MLP를 활용한 로또 예측 프로그램

지난 포스팅에서는 회귀 분석 이론을 바탕으로 랜덤 포레스트라는 모델을 사용해서 로또 예측 프로그램을 만들어봤습니다. 이번 포스팅에서는 MPL(다중 퍼셉트론)을 활용해서 로또 예측 프로그램을 역시 심심풀이로...

회귀 분석을 활용한 로또 예측 프로그램

import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestRegressor # CSV 파일에서 과거 로또 번호 데이터 로드 (예: lotto_history.csv) # CSV 파일에는...

‘기초~중급 Python 문법’ 정모(2022.03.04)

최근에 기초~중급 수준의 내용으로 정모를 가졌어요. 물론, 저희 60coding은 클래스 모임이 아닌 코딩 공부(주제는 미리 공지) 리뷰와 잡담 위주의 모임을 추구합니다. 60Coding의 최민진 멘토님이...