프로그래머스 코딩테스트 문제를 풀면서 새롭게 알게된 문법과 코테 문제를 기록해두기
코딩테스트 문제를 풀면서 리스트 컴프리헨션(List Comprehension) 문법을 처음 사용해 보았다.
리스트 컴프리헨션은 반복문을 사용하여 리스트를 간결하게 생성하는 파이썬 문법이다.
[표현식 for 변수 in 반복가능객체]
예시
numbers = [1,2,3,4,5]
result = [x * 2 for x in numbers]
print(result)
출력
[2, 4, 6, 8, 10]
설명
numbers 리스트의 값을 하나씩 x에 넣는다x * 2 연산을 수행한다일반적인 반복문
numbers = [1,2,3,4,5]
result = []
for x in numbers:
result.append(x * 2)
리스트 컴프리헨션
result = [x * 2 for x in numbers]
→ 같은 동작을 더 간결하게 표현할 수 있다.
리스트 컴프리헨션에는 조건문도 사용할 수 있다.
numbers = [1,2,3,4,5,6]
result = [x for x in numbers if x % 2 == 0]
print(result)
출력
[2, 4, 6]
설명
numbers 리스트에서arr = [1,2,3,4,5,6,7,8,9]
result = [arr[i:i+3] for i in range(0, len(arr), 3)]
print(result)
출력
[[1,2,3],
[4,5,6],
[7,8,9]]
설명
range(0, len(arr), 3) → 3칸씩 이동arr[i:i+3] → 리스트를 3개씩 슬라이싱리스트 컴프리헨션은 다음과 같은 특징이 있다.
if)을 함께 사용할 수 있다문자열 배열 strlist가 매개변수로 주어질 때
각 문자열의 길이를 담은 배열을 반환하는 문제이다.
["We", "are", "the", "world!"]
[2, 3, 3, 6]
"We" → 길이 2"are" → 길이 3"the" → 길이 3"world!" → 길이 6def solution(strlist):
return = [len(i) for i in strlist]
정수의 절댓값이 담긴 배열 absolutes와
각 정수의 부호를 나타내는 boolean 배열 signs가 주어진다.
signs[i] == True → 양수 signs[i] == False → 음수 실제 정수들의 합을 구하는 문제이다.
absolutes = [4,7,12]
signs = [True, False, True]
x = 0
for i in signs:
if i == True:
absolutes[x] = absolutes[x] * 1
else:
absolutes[x] = absolutes[x] * (-1)
x += 1
return sum(absolutes)
리스트 컴프리헨션과 zip 함수를 사용하면 코드를 훨씬 간결하게 작성할 수 있다.
def solution(absolutes, signs):
return sum(a if s else -a for a, s in zip(absolutes, signs))
처음에는 문법이 낯설었지만, 반복문보다 훨씬 간결하게 코드를 작성할 수 있다는 점이 인상적이었다.
코딩테스트에서 리스트 생성이나 데이터 변환을 할 때 매우 유용한 문법이라고 느꼈다.
또한