-
[Python]List Comprehension을 활용한 코드 최적화코딩/파이썬 2023. 7. 29. 16:35반응형
이번에는 Python의 강력한 기능 중 하나인 리스트 컴프리헨션(List Comprehension)에 대해 알아보겠습니다. 초보자가 사용하기에는 문법이 약간 복잡하지만, 한 번 알면 이해하고 활용하는 데 큰 어려움이 없을 것입니다.
목차
1. Python List Comprehension이란?
List Comprehension은 Python에서 리스트를 생성하는 간결하고 효율적인 방법입니다. 복잡한 코드를 한 줄로 줄여 보기 쉽게 만들어주며, 코드의 실행 속도를 높여줍니다. 아래 일반적인 리스트 생성과 List Comprehension을 이용한 생성 방법을 비교해 보도록 하겠습니다.
# 1. 일반적인 방법으로 리스트를 생성하는 예 numbers = [] for i in range(10): numbers.append(i) print(numbers) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 2. List Comprehension을 사용하여 같은 리스트를 생성하는 예 numbers = [i for i in range(10)] print(numbers) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
위 두 번째에 있는 아래 부분이 List Comprehension 으로 생성하는 방법입니다.
리스트 괄호 [ ] 내에 for 문을 넣고, 매 루프의 결과를 i 를 list의 요소로 삽입합니다.numbers = [ i for i in range(10)]
2. List Comprehension의 장점
가독성 향상
List Comprehension의 가장 큰 장점 중 하나는 코드의 가독성을 향상시킨다는 것입니다. 코드가 줄어들어 전체적인 프로그램 구조를 이해하는 데 도움이 됩니다.
속도 향상또한, List Comprehension은 일반적인 for loop나 map, filter 함수에 비해 처리 속도가 빠르다는 장점도 있습니다.
# 시간 측정을 위한 코드 import time start = time.time() numbers = [i for i in range(1000000)] end = time.time() print('List Comprehension Time:', end-start) start = time.time() numbers = [] for i in range(1000000): numbers.append(i) end = time.time() print('For loop Time:', end-start)
위 코드로 List Comprehension와 일반적인 for 과 실행 시간 비교가 가능합니다.
아래 jupyter 에서 실행해보면 list comprehension이 for문 보다 2배 가까이 빠른 것을 확인할 수 있습니다.3. 사용 예시
다양한 경우에 List Comprehension을 활용할 수 있습니다. 이를테면, 리스트에서 특정 조건에 맞는 요소만을 선택하거나, 각 요소에 함수를 적용하는 것 등이 가능합니다. 아래는 주요 사례를 몇 가지 들어보았습니다.
짝수만 추출
# 짝수만 추출하는 예시 numbers = [i for i in range(10) if i % 2 == 0] print(numbers) # [0, 2, 4, 6, 8]
리스트 요소 제곱하기
# 각 요소에 함수 적용 예시 squares = [i**2 for i in range(10)] print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
문자열 리스트에서 특정 길이 이상의 단어만 선택
words = ["apple", "banana", "cherry", "date"] long_words = [word for word in words if len(word) > 5] print(long_words) # ['banana', 'cherry']
문자열 리스트에 대문자 변환 함수 적용하기
words = ["apple", "banana", "cherry", "date"] uppercase_words = [word.upper() for word in words] print(uppercase_words) # ['APPLE', 'BANANA', 'CHERRY', 'DATE']
중첩된 리스트를 단일 리스트로 펼치기 (Flattening):
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] flat_list = [num for sublist in nested_list for num in sublist] print(flat_list) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
결론적으로, Python의 List Comprehension은 코드를 보다 간결하게 작성할 수 있게 해주고, 처리 속도를 향상시키는 훌륭한 도구입니다. 앞서 제시한 예시들을 바탕으로 실제 코드 작성에 활용해보시기 바랍니다. 초보자분들도 조금의 연습만 있다면 이 기능을 쉽게 활용하실 수 있을 것입니다.
반응형'코딩 > 파이썬' 카테고리의 다른 글
[Python]람다(lambda) 함수 이해하기 (0) 2023.07.29 [Python] 리스트와 튜플(tuple)의 차이점 이해하기 (0) 2023.07.29 [Python] 초보자를 위한 데코레이터(Decorator) 사용법 (0) 2023.07.29 chatGPT로 Text 요약하기 (0) 2023.04.16 Python으로 chatGPT API 사용하기 (2) 2023.04.16