파이썬 공부를 할 겸 프로그래머스 코딩테스트 문제를 풀고 있다.
문제를 풀고 다른 사람 풀이를 구경하는 재미가 쏠쏠한데,
정말 거의 모든 문제에서 파이썬이 이 정도라고? 하고 놀라는 중...
그 중 하나가 바로 List Comprehension이었다.
[ expression for item in a list {if condition_is_met} ]
expression
: 존재하는 리스트의 각 요소에 대한 연산을 하여 새로운 값을 반환하기 위한 표현식이다.
최대 두 개의 표현식만 사용할 수 있다.
[문제1]
정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
(배열 두 배 만들기)
[풀이]
def solution(numbers):
return [num*2 for num in. numbers]
리스트 안에서 반복문을 사용한다?
정말 상상하기 힘든 방법이었다(...)
List Comprehension은 반복문과 유사하다.
리스트와 리스트의 반복을 하나의 라인으로 만들 수 있어,
따로 반복 구조를 만들지 않아도 된다.
[문제2]
문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.
[solution]
def solution(strlist):
return [len(word) for word in strlist]
strlist에 저장된 단어를 하나씩 꺼내어 그 길이들을 리스트로 반환한다.
map(변환 함수, 순회 가능한 데이터)
map과 list comprehension은 같이 바꿔서 사용할 수 있다.
def solution(strlist):
return [len(word) for word in strlist]
def solution_map(strlist):
return list(map(len, strlist))
// 배열의 각 단어를 읽어와 길이를 구하고 리스트로 반환
출처: https://learnpython.com/blog/python-lists-list-comprehension-new-year-resolutions/