[Python] List comprehension
- List comprehension이란
- 기존의 List를 사용하여 간단히 다른 List를 만드는 기법
- 포괄적인 List, 포함되는 List라는 의미로 사용
- 파이썬에서 가장 많이 사용되는 기법 중 하나
- 일반적으로 for + append 보다 속도가 빠르다
기존의 코드 스타일과 List Comprehension을 적용한 코드를 비교해보자.
위의 코드를 List comprehension을 이용한 코드로 변화하면 다음과 같다.
List comprehension을 사용하면 코드도 짧고 속도도 빠르다.
중첩 Loop 또한 List comprehension으로 구현할 수 있다.
위의 코드는 case1에 해당하는 i loop 내부에 case2에 해당하는 j loop가 있다고 생각하면 된다.
따라서 i를 고정시키고, j를 바꾸며 두 문자열을 합친 문자열을 list에 추가하는 예제이다
AD, AE, AF~...
다음과 같이 조건 또한 추가할 수 있다.
i와 j가 같지 않은 경우 리스트에 추가한다.
위의 예제에서 i와 j가 같은 경우는 두 문자 모두 'C'인 경우이다.
앞 글에서 배운 split()와 list comprehension을 적절히 잘 이용하면 다음과 같은 예제도 할 수 있다.
'Failure is but a stepping stone to success'라는 영어속담의 단어를 분리하여 영어단어 배열(대문자, 소문자, 단어 길이)로 만들어보자.
영어 문장을 빈칸으로 분리하여 words에 저장하였고
words 리스트를 list comprehension을 이용하여
단어의 대문자형, 소문자형, 단어 길이를 가지는 리스트로 구성된 2차원 리스트를 stuff에 저장하였다.
stuff를 출력해보면 다음과 같다.
다른 언어에서는 잘 사용하지 않는? 파이썬 만의 개념인 것 같다.
처음엔 조금 어색하게 다가오는 문법이지만 잘 사용한다면 간결하고 빠른 코드를 만들어낼 수 있을 것 같다.
'Failure is but a stepping stone to success'
실패는 성공의 어머니 라는 뜻이다.
참고