Programming/Python

์•Œ์•„๋‘๋ฉด ์ข‹์€ python ํ•จ์ˆ˜ - lambda, assert, map, filter

inistory 2021. 3. 25. 22:58

1. lambda()

def square(x):
	return x*x
    
     
 square = lambda x: x*x

 

books = [
	"์‹ ๋ฐ๋ ๋ผ, 2008",
    "๋ฐฑ์„ค๊ณต์ฃผ, 2007",
    "์ธ์–ด๊ณต์ฃผ, 2020"
]

#Example 1
def get_title(row):
	split = row.split(',')
    return split[0]
sorted(books, key = get_title)


#Example 2
get_title = lambda row: row.split(',')[0]
sorted(books, key = get_title)


#Example 3
sorted(books, key = lambda row:row.split(',')[0])

 

  • Example 1,2,3 ์€ ๋ชจ๋‘ ๊ฐ™์€ ์ผ์„ ์ˆ˜ํ–‰
  • lambda๋ฅผ ์ด์šฉํ•ด ์ฝ”๋“œ๋ฅผ ์งง๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ

2. assert()

  • ๋‘ ๊ฐ€์ง€์˜ ๊ฐ’์ด ๋™์ผํ•œ์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
  • ๋‘ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด ํ†ต๊ณผ, ์•„๋‹ˆ๋ฉด ์—๋Ÿฌ
def square1(x):
	return x*x
square2 = lambda x:x*x

assert(square1(3) == square(3))

 

  • square1 ๊ณผ square2๊ฐ€ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ํ™•์ธ 
  • ๋‘ ๊ฐ’์ด ๊ฐ™์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ์— assertionError ๋ฐœ์ƒ

 

3. map()

  • ์žฅ์ : ๋ฆฌ์ŠคํŠธ ๋ณด๋‹ค ๋น ๋ฆ„, ํ•„์š”์—†๋Š” ์—ฐ์‚ฐ์€ ํ•˜์ง€ ์•Š์Œ
books = [
	"์‹ ๋ฐ๋ ๋ผ,Cinderella, 2008",
    "๋ฐฑ์„ค๊ณต์ฃผ, Snow White, 2007",
    "์ธ์–ด๊ณต์ฃผ, The Little Mermaid, 2020"
]

#Example 1
def get_eng_title(row):
	split = row.split(',')
    return split[1]
eng_titles = [get_eng_title(row) for row in books]

#Example 2 : map ์‚ฌ์šฉ
def get_eng_title(row):
	split = row.split(',')
    return split[1]
eng_titles = map(get_eng_title, books) #books ๋ฆฌ์ŠคํŠธ์— ์†ํ•œ ๋ชจ๋“  ์›์†Œ๋“ค์— get_eng_title ํ•จ์ˆ˜ ๋ฐ˜์˜


#Example 3 : lambda, map ์‚ฌ์šฉ
eng_titles = map(lamda row: row.split(',')[1], books)

 

  • Example2 ์—์„œ eng_titles ์ถœ๋ ฅ์‹œ, <map object at ~~~> ๋ผ๊ณ  ๋œฌ๋‹ค(
    (map์ด๋ผ๋Š” ํƒ€์ž…์„ ์ถœ๋ ฅ, ํ•„์š”์—†๋Š” ์—ฐ์‚ฐ์„ ํ•˜์ง€ ์•Š์€ mapํ•จ์ˆ˜์˜ ํŠน์ง• ๋•Œ๋ฌธ)
  • eng_titles[0] ์ด๋Ÿฐ ์‹์œผ๋กœ ์ถœ๋ ฅํ•ด์•ผ ๊ฐ’์ด ์ถœ๋ ฅ ๋จ
  • ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋ฐ”๊พธ๋ฉด ๊ฒฐ๊ณผ๋ฌผ ์กฐํšŒ ๊ฐ€๋Šฅ : list(eng_titles)

 

4. filter()

def starts_with_a(word):
	return word.startswith('r')
    
words = ['rabbit','dog','cat', 'red']
r_words = filter(starts_with_a, words)

 

  • print(r_word) ๋Š” filter ํƒ€์ž…์„ ์ถœ๋ ฅ
  • print(list(r_word) ํ˜•ํƒœ๋กœ ๋ฐ”๊พธ๋ฉด ๊ฒฐ๊ณผ๋ฌผ ์กฐํšŒ ๊ฐ€๋Šฅ