Python: Tips, Tricks and Idioms

Apr 22, 2015/Apr 27, 2017

원문 : Python: Tips, Tricks and Idioms

λ²ˆμ—­ κΉŒμ§€λŠ” μ•„λ‹ˆκ³ (λ²ˆμ—­ν•  λ‚΄μš©λ„ λ³„λ‘œ 없기에.) λˆˆμ— λ„λŠ” λͺ‡κ°€μ§€λ§Œ 주관적인 μ˜κ²¬μ„ λΆ™μ—¬μ„œ 적어본닀.

enumerate
– index 와 같이 좜λ ₯ν•˜κΈ° μœ„ν•΄μ„œ i λ“±μ˜ λ³€μˆ˜λ₯Ό ++ ν•˜λŠ” ν˜•νƒœλ‘œ for문을 λŒλ¦¬μ§€λ§κ³  enumerate λ₯Ό μ‚¬μš©ν•˜λ©΄ κ°„λ‹¨ν•˜κ²Œ 해결이 λœλ‹€.

set

– set 은 사싀 잘 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ°, ν•΄λ‹Ή μš”μ†Œκ°€ unique ν•΄μ•Ό ν•œλ‹€λŠ” μ œμ•½μ΄ μžˆλ‹€. μ•„λž˜μ˜ μ†ŒμŠ€λ₯Ό 보면 λ‹¨μˆœνžˆ list λ‚΄ μš”μ†Œμ—μ„œ ν¬ν•¨λœκ²ƒ(ꡐ집합, intersection)κ³Ό ν¬ν•¨λ˜μ§€ μ•Šμ€κ²ƒ(차집합, difference) 을 set 을 μ΄μš©ν•΄μ„œ κ°€μ Έμ˜€λŠ” 것을 λ³Ό 수 μžˆλ‹€. 기쑴의 list μ—μ„œ for 루프λ₯Ό ν†΅ν•΄μ„œ κ±ΈλŸ¬λƒˆμ—ˆλ‹€λ©΄ set을 μ‚¬μš©ν•˜λŠ” μ½”λ“œλ‘œ λ°”κΎΈλŠ”κ²Œ 쒋을것 κ°™λ‹€.

for … else
– μ‹ κΈ°ν•œ ꡬ문이닀. if else κ°€ μ•„λ‹Œ for else λΌλ‹ˆ. λ˜λŠ”κ²ƒμ΄ μ‹ κΈ°ν•œλ° μ•„λž˜μ˜ μ½”λ“œλ₯Ό λ³΄λ©΄μ„œ μ„€λͺ…을 ν•˜λ©΄, break문이 λ„λ‹¬ν•˜μ§€ μ•Šκ³  for 루프λ₯Ό νƒˆμΆœν•˜κ²Œ 되면 else: ν•˜μœ„μ˜ ꡬ문이 μ‹€ν–‰λœλ‹€. κ·Έλ ‡μ§€λ§Œ, break문에 λ„λ‹¬ν•΄μ„œ νƒˆμΆœν•˜κ²Œ 되면 else: ν•˜μœ„μ˜ ꡬ문은 μ‹€ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€.

Generator expressions

– yield λ₯Ό μ΄μš©ν•œ generator λ₯Ό λ§Œλ“œλŠ” 방법은 μ›Œλ‚™ 잘 μ•Œλ €μ Έ μžˆλŠ”λ° μ—¬κΈ°μ—μ„œλŠ” κ΄„ν˜Έ() λ₯Ό μ΄μš©ν•΄μ„œ generator λ₯Ό λ§Œλ“€κ³  μžˆλ‹€. λ§Œμ•½ μ•„λž˜μ˜ μ½”λ“œμ—μ„œ κ΄„ν˜Έ() λŒ€μ‹ μ— [] λ₯Ό μ“°κ²Œ 되면 generator κ°€ μ•„λ‹Œ list둜 λ§Œλ“€μ–΄μ§€λ‹ˆ μ£Όμ˜ν•˜μž. generator λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” μ΄μœ μ— λŒ€ν•΄μ„œ 원 μ €μžλŠ” List Comprehension 의 λ¬Έμ œμ μ€ λ©”λͺ¨λ¦¬μ— λ°”λ‘œ μ μž¬λœλ‹€λŠ” 점이고, 이 뢀뢄은 맀우 큰 λ°μ΄ν„°μ˜ 경우 λ¬Έμ œκ°€ 될수 μžˆλ‹€κ³  ν•œλ‹€. generator λ₯Ό μ‚¬μš©ν•˜λ©΄ 객체가 늦게 μƒμ„±λœλ‹€κ³  ν•˜κ³  μ‹€μ œ 값을 μš”μ²­ν•˜κΈ° μ „κΉŒμ§€ μ–΄λ–€ 연산도 μ—†λ‹€κ³  μ„€λͺ…ν•˜κ³  μžˆλ‹€.(you can use a generator expression, which uses very similar syntax, but creates a lazy object, that computes nothing until you ask for a value.)

Dictionary Comprehension
– List Comprehension 은 많이 봀어도 Dictionary에 λŒ€ν•œκ²ƒμ€ μ²˜μŒλ΄μ„œ 적어둔닀. μ•„λž˜μ˜ μ½”λ“œλ₯Ό 보면 전에 봀던 generator expression 에 dict() 을 ν•¨μœΌλ‘œμ¨ μƒμ„±ν• μˆ˜λ„ 있고 [] λŒ€μ‹ μ— {} λ₯Ό μ‚¬μš©ν•΄μ„œ Dictionaryλ₯Ό λ§Œλ“€μ–΄ λ‚΄κ³  μžˆλ‹€.

기타 defaultdict, Counter에 λŒ€ν•œ μ†Œκ°œλ„ 원문링크λ₯Ό 보면 λ‚˜μ™€μžˆλ‹€. 이미 μ•Œκ³  μžˆλŠ”λΆ€λΆ„μ΄λΌμ„œ μ†Œκ°œν•˜μ§„ μ•Šμ•˜μ§€λ§Œ, ν•œλ²ˆ ν›‘μ–΄λ³΄λŠ”κ²ƒλ„ 쒋을것 κ°™λ‹€.

[λ²ˆμ—­] 6 Python Performance Tips


#dev  #performances  #Python  #tips  #tricks