이모저모
.reduce(), .join() 사용 본문
프로래머스 길이에 따른 연산 관련 내용이다.
1. .reduce()이용
from functools import reduce
def solution(num_list):
def mult(x,y):
return x*y
answer = sum(num_list) if len(num_list)>=11 else reduce(mult, num_list)
return answer
더 자세한 내용은 https://chancoding.tistory.com/184 참고하면 된다.
2. .reduce() & lamda 이용(prod()도 사용가능)
from functools import reduce
def solution(l):
return sum(l) if len(l)>=11 else reduce(lambda a,b: a*b, l)
리스트 곱하기의 더 자세한 내용은 https://chancoding.tistory.com/186을 참고하면 된다.
추가로 from math import prod, prod(list)를 사용하면 곱셈의 결과를 반환해준다.
3. .join() 이용
def solution(num_list):
if len(num_list) >= 11:
return eval('+'.join(list(map(str, num_list))))
else:
return eval('*'.join(list(map(str, num_list))))
map(str, num_list)를 이용해 num_list 내의 요소들을 string 타입으로 바꾼다. (join을 사용하려면 string 이어야 한다.)
그 후 구분자를 '*'로 사용하여 문자열로 합친다. eval은 string을 명령어처럼 쓸 수 있게 해주는 함수이다.
'코딩공부 > 프로그래머스(파이썬)' 카테고리의 다른 글
세개의 구분자 문제(split, join) (0) | 2024.01.09 |
---|---|
배열만들기2 (1) | 2024.01.02 |
주사위게임3, 수 조작하기1 (0) | 2024.01.02 |
리스트 정렬 & 슬라이싱 (0) | 2023.12.28 |
대소문자 바꿔서 출력하기 (0) | 2023.12.27 |