관리 메뉴

이모저모

.reduce(), .join() 사용 본문

코딩공부/프로그래머스(파이썬)

.reduce(), .join() 사용

bhoon 2024. 1. 2. 10:35

프로래머스 길이에 따른 연산 관련 내용이다.

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

reduce 실행과정

더 자세한 내용은 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을 명령어처럼 쓸 수 있게 해주는 함수이다.