[Python] list Comprehension
본 포스팅은 edwith BoostCourse에서 ‘머신러닝을 위한 파이썬’ 강의를 듣고 한 포스팅입니다.
우리가 흔히 아는 ‘배열’에 값을 집어넣기 위해서는 어떻게 해야할까? 보통 반복문을 돌려서 순차적으로 집어넣는 것을 생각할 것이다. 파이썬은 반복문과 함수들로 간편하게 사용할 수 있다.
result = []for i in range(5):
result.append(i)
append()함수를 쓰면 리스트에 값을 편리하게 삽입할 수 있다. 위와 같이 코드를 작성하면 result 리스트에 1부터 5까지 순차적으로 삽입하게 된다. 이것이 흔히 우리가 아는 리스트에 값을 집어넣는 방식일 것이다. 그런데 파이썬에서는 조금 색다른 방식으로 리스트에 값을 집어 넣을 수 있다.
result = [i for i in range(5)]
이렇게 리스트의 값으로 for문을 한줄로 넣어주면 값이 순차적으로 들어가서 append로 집어넣은 것과 동일한 결과가 나온다. 또한 여기에 조건을 줄 수 가 있는데,
result = [i for i in range(5) if i%2 == 0]
과 같이, if 문도 동시에 삽입을 해주면 그에 맞는 값만 리스트에 들어가게 된다. i%2가 0인것만 집어넣으라고 했으니, 0을 포함한 짝수들만 result 리스트에 들어가게 될 것이다. 이것을 list comprehension 이라고 한다.
이러한 list comprehension은 다양하게 사용할 수 있다.
1)이중 for문
word_1 = "Hello"
word_2 = "World"
result = [i+j for i in word_1 for j in word_2]
printr(result)
2)이중 for문 + 조건문
word_1 = "Hello"
word_2 = "World"
result = [i+j for i in word_1 for j in word_2]
printr(result)
# if 문 추가
result = [i+j for i in case_1 for j in case_2 if not(i==j)]
print(result)
1),2)와 같이 다중 포문 또한 한 줄로 넣어서 사용할 수 있고, if문으로 필터를 걸어서 사용할 수도 있다. 앞에서 언급한 Split() 함수를 써서 문자열을 분리한 뒤, 새로운 리스트에 값을 집어넣는 것도 하나의 방법이 될 수 있다.