본문 바로가기

About/Python

[Python] List comprehension

- List comprehension이란

  • 기존의 List를 사용하여 간단히 다른 List를 만드는 기법
  • 포괄적인 List, 포함되는 List라는 의미로 사용
  • 파이썬에서 가장 많이 사용되는 기법 중 하나
  • 일반적으로 for + append 보다 속도가 빠르다

 

기존의 코드 스타일과 List Comprehension을 적용한 코드를 비교해보자.

기존의 코드 스타일

위의 코드를 List comprehension을 이용한 코드로 변화하면 다음과 같다.

 

List comprehension을 사용한 코드

 

List comprehension을 사용하면 코드도 짧고 속도도 빠르다.

 

중첩 Loop 또한 List comprehension으로 구현할 수 있다.

List Comprehension을 이용한 중첩  loop 구현

위의 코드는 case1에 해당하는 i loop 내부에 case2에 해당하는 j loop가 있다고 생각하면 된다.

따라서 i를 고정시키고, j를 바꾸며 두 문자열을 합친 문자열을 list에 추가하는 예제이다

AD, AE, AF~...

 

다음과 같이 조건 또한 추가할 수 있다.

List Comprehension 조건문 추가

i와 j가 같지 않은 경우 리스트에 추가한다. 

위의 예제에서 i와 j가 같은 경우는 두 문자 모두 'C'인 경우이다.

 

 

 

앞 글에서 배운 split()와 list comprehension을 적절히 잘 이용하면 다음과 같은 예제도 할 수 있다.

'Failure is but a stepping stone to success'라는 영어속담의 단어를 분리하여 영어단어 배열(대문자, 소문자, 단어 길이)로 만들어보자.

 

영어 속담 분리 예제

영어 문장을 빈칸으로 분리하여 words에 저장하였고

words 리스트를 list comprehension을 이용하여

단어의 대문자형, 소문자형, 단어 길이를 가지는 리스트로 구성된 2차원 리스트를 stuff에 저장하였다.

stuff를 출력해보면 다음과 같다.

2차원 리스트 출력

 

다른 언어에서는 잘 사용하지 않는? 파이썬 만의 개념인 것 같다.

처음엔 조금 어색하게 다가오는 문법이지만 잘 사용한다면 간결하고 빠른 코드를 만들어낼 수 있을 것 같다.

 

 

'Failure is but a stepping stone to success'

실패는 성공의 어머니 라는 뜻이다.

 

 

참고

https://www.edwith.org/aipython/joinLectures/28027

'About > Python' 카테고리의 다른 글

[Python] Collections - deque  (0) 2020.12.20
[Python] Lambda & Map & Reduce  (0) 2020.12.20
[Python] Enumerate(), Zip()  (0) 2020.12.13
[Python] Split(), Join()  (0) 2020.12.13
[Python]Pythonic Code란  (0) 2020.12.11