[Python] - sum 톺아보기 πŸ”

FeelingXDΒ·2023λ…„ 12μ›” 16일
0

python

λͺ©λ‘ 보기
6/7
post-thumbnail

πŸ‘€. python의 sum ν•¨μˆ˜μ— λŒ€ν•΄ μ•Œμ•„λ΄…λ‹ˆλ‹€.

Python 의 sum πŸ‘€

python 의 sum ν•¨μˆ˜λŠ” λ‹€μŒκ³Ό 같이 μ •μ˜λ˜μ–΄μžˆλ‹€.

def sum(
    __iterable: Iterable[_LiteralInteger | bool],
    /,
    start: int = 0
) -> int: ...

def sum(
    __iterable: Iterable[_SupportsSumNoDefaultT@sum],
    /
)

즉 기본적인 ν˜•νƒœλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

def sum(iterable) #1
def sum(iterable, start=0)  #2
  1. sum(iterable)
  • 기본적으둜 sum μΈμžλŠ” iterable ν•œ μžλ£Œν˜•μ„ λ°›μœΌλ©° λ‚΄λΆ€μ›μ†ŒλŠ” numeric 해야함(μ‹€μˆ˜, μ •μˆ˜ λ“±)
  • λ°˜ν™˜ν˜•μ€ iterable μ›μ†Œμ˜ 합을 μˆœνšŒν•˜μ—¬ λ°˜ν™˜
  1. sum(iterable,start=0)
  • μ‹€μ œλ‘œ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜ μœ„μ˜ μ„€λͺ…κ³Ό λ”λΆˆμ–΄μ„œ start μΈμžκ°’ 으둜 μ΄ˆκΈ°κ°’μ„ μ„€μ •ν•΄μ€„μˆ˜μžˆλ‹€.
testlist= [1,2,3,4]
sum(testlist) # expect 1+2+3+4 10
sum(testlist,start=1) # expect 11

sum의 λ™μž‘ 🐒

sum 은 λ‹€μŒ κ³Ό 같이 λ™μž‘ν•œλ‹€.

  1. μ΄ˆκΈ°ν™”: sum() ν•¨μˆ˜λŠ” λˆ„μ‚°κΈ° λ³€μˆ˜λ₯Ό start λ§€κ°œλ³€μˆ˜μ— μ§€μ •λœ κ°’(λ˜λŠ” startκ°€ μ œκ³΅λ˜μ§€ μ•Šμ€ 경우 0)으둜 μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€.
  2. 순회: 반볡 κ°€λŠ₯ν•œ ν•­λͺ©μ˜ 각 μš”μ†Œλ₯Ό λ°˜λ³΅ν•©λ‹ˆλ‹€.
  3. λˆ„μ : 반볡 κ°€λŠ₯ ν•­λͺ©μ˜ 각 μš”μ†Œμ— λŒ€ν•΄ ν•΄λ‹Ή μš”μ†Œλ₯Ό λˆ„μ‚°κΈ°μ— μΆ”κ°€ν•©λ‹ˆλ‹€.
  4. κ²°κ³Ό: μ΅œμ’… κ²°κ³ΌλŠ” 반볡 κ°€λŠ₯ν•œ λͺ¨λ“  μš”μ†Œμ˜ ν•©κ³„μž…λ‹ˆλ‹€.

μœ„μ˜ 예제 μ—μ„œ λ‹€μŒκ³Ό 같이 λ™μž‘ν•œλ‹€.

testlist= [1,2,3,4]
sum(testlist) # expect 1+2+3+4 10

# sum(testlist) λŠ” μ‹€μ œλ‘œλŠ” sum(testlist,start=0) μœΌλ‘œλ™μž‘

def exampleSum(testlist,start): # μ„€λͺ…을 λ•κΈ°μœ„ν•œ ν•¨μˆ˜
  start=start
  for number in testlist:
      start=+number
  return start

sum 의 μ‘μš© ✨

sum 은 기본적으둜 numeric iterable의 합을 κ΅¬ν•˜κΈ°μœ„ν•΄ μ‚¬μš©λœλ‹€.
ν•˜μ§€λ§Œ sum을 μ‘μš©ν•΄μ„œ λ‹€λ₯Έ λ°©λ²•μœΌλ‘œλ„ μ‚¬μš©ν• μˆ˜μžˆλ‹€.

# sum 을 μ΄μš©ν•˜μ—¬ 2차원 배열을 1μ°¨μ›λ°°μ—΄λ‘œ λ°”κΎΈκΈ°
testlist=[[1,2],[3,4]]
sum(testlist,start=[])# expect :[1,2,3,4]

μ™œ μ΄λ ‡κ²Œ 될까 ?

sum ν•¨μˆ˜μ˜ λ™μž‘κ³Ό startμΈμžλ‘œμΈν•΄ λ‹€μŒ κ³Ό 같은 절차λ₯Ό ν–‰ν•œλ‹€.

# μ΄ˆκΈ°κ°’ []
start=[]
for v in testlist:
	start+=v
return start
# 
# 1. [] + [1,2] -> [1,2]
# 2. (1의결과) [1,2] + [3,4] ->[1,2,3,4]
# return [1,2,3,4]

μ΄λ ‡κ²Œ μ›μ†Œκ°€ numeric이 μ•„λ‹ˆλ”λΌλ„ sumν•¨μˆ˜κ°€ λ™μž‘ν•  수 μžˆλ‹€.
λ‹€λ§Œ sum ν•¨μˆ˜κ°€ 결과의 μ™„μ „ν•œ λ°˜ν™˜μ„ 보μž₯ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.

μ£Όμ˜ν• μ 

예λ₯Όλ“€μ–΄ μˆœνšŒν•˜λŠ” iterable이 λ‹€μ–‘ν•œ μžλ£Œν˜•μ΄ μžˆλ‹€λ©΄ 이듀쀑 add ν•¨μˆ˜κ°€ λ™μž‘ν•¨μ„ 보μž₯ν•  수 μ—†κ³  개발자의 μ˜λ„μ™€ λ‹€λ₯΄κ²Œ λ™μž‘ν• μˆ˜λ„ 있기 λ•Œλ¬Έμ΄λ‹€.

  1. typeErrorλ₯Ό μΌμœΌν‚€λŠ” 경우
testlist=['1',2]
sum(testlist) # -> TypeError str + int λŠ” λ”ν• μˆ˜μ—†μŒ x(
  1. μ˜ˆμƒκ³Ό λ‹€λ₯΄κ²Œ λ™μž‘ν•˜λŠ” 경우
testlist=[1,True,False] # 
sum(testlist) # -> 2 int 와 bool 합을 κ³„μ‚°ν•œλ‹€λ©΄ True λŠ” 1둜 False λŠ” 0으둜 λ³€ν•œλ‹€. 즉 1+1(True)+0(False) 둜 λ™μž‘ν•œλ‹€.
profile
tistory둜 μ΄μ‚¬κ°‘λ‹ˆλ‹€. :) https://feelingxd.tistory.com/

0개의 λŒ“κΈ€