TIL 26 | Lambda

saneeeeeeee_Yaยท2021๋…„ 7์›” 17์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
11/11
post-thumbnail

Lambda

๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜๋‚˜์˜ ํ‘œํ˜„์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ

  • ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ๊ด‘๋ฐ›๊ณ  ์žˆ๋Š” ์š”์ฆ˜ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๋ฅผ ๋‚˜๋ˆŒ ํ•„์š”์—†์ด ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์•ˆ์— ๋žŒ๋‹คํ‘œํ˜„์‹์œผ๋กœ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค

  • ๋ถˆํ•„์š”ํ•œ Loop๋ฌธ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค

  • ํ‘œํ˜„์‹๋งŒ์œผ๋กœ return๊ฐ’์„ ๋˜๋Œ๋ ค์ค€๋‹ค

์ •๋ ฌ

def check_password(password):
    if len(password) < 8:
        return 'SHORT_PASSWORD'

    if not any(c.isupper() for c in password):
        return 'NO_CAPITAL_LETTER_PASSWORD'

    return True

# Lambdaํ˜• ๋ณ€ํ™˜

lambdas = [ 
  lambda x : 'SHORT_PASSWORD' if len(x) < 8 else None,
  lambda x : 'NO_CAPITAL_LETTER_PASSWORD' if not any(c.isupper() for c in x) else None
]

def check_password_using_lambda(password):

    for f in lambdas:
        if f(password) is not None:
            return f(password)

    return True


print( check_password_using_lambda('123') )            
# SHORT_PASSWORD
print( check_password_using_lambda('12356789f') )      
# NO_CAPITAL_LETTER_PASSWORD
print( check_password_using_lambda('123456789F') )    
# True

any()

์ „๋‹ฌ๋ฐ›์€ ์ž๋ฃŒํ˜•์˜ element ์ค‘ ํ•˜๋‚˜๋ผ๋„ True์ผ ๊ฒฝ์šฐ True๋ฅผ ๋Œ๋ ค์ค€๋‹ค.
(๋งŒ์•ฝ empty ๊ฐ’์„ argument๋กœ ๋„˜๊ฒจ์ฃผ์—ˆ๋‹ค๋ฉด False๋ฅผ ๋Œ๋ ค์ค€๋‹ค.)

map

list(map(lambda x: x , list )
๊ฐ ๋ฆฌ์ŠคํŠธ ์š”์†Œ๋“ค์„ x์˜ ์ƒํƒœ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์–ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค'

def solution(numbers):
    numbers = list(map(str, numbers))
    numbers.sort(key = lambda x: x*3, reverse=True) 
    return str(int("".join(numbers)))

filter

filter ์กฐ๊ฑด์˜ boolean ๊ฐ’์ด True ์ฐธ์ธ ์š”์†Œ๋งŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค

numberList = [1, 2, 3, 4, 5]
result = list(filter(lambda x : int == type(x), numberList))

# [1, 2, 3, 4, 5]

Reduce

functools์— ์žˆ๋Š” ๋ชจ๋“ˆ๋กœ ์•ž์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๊ณ„์‚ฐ์„ ํ•ด์ค€๋‹ค

from functools import reduce

list = [ 1, 2, 3, 4, 5]

def addList(list):
  return reduce(lambda x, y : x + y, list)
  
# 15

profile
๐Ÿœhttps://action2thefuture.github.io/๐Ÿœ

0๊ฐœ์˜ ๋Œ“๊ธ€

Powered by GraphCDN, the GraphQL CDN