파이써닉 코드에 대해서 #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의 활용법을 하나씩 추가적으로 배워보도록 하겠습니다.