Search
Duplicate

Pythonic Code

์ƒ์„ฑ์ž
๋ถ„๋ฅ˜
ํŒŒ์ด์ฌ
์ƒ์„ฑ์ผ
2023/02/16 14:02

Pythonic Code

์™œ ๋ฐฐ์šฐ๋‚˜?
โ€ข
๋‚จ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ดํ•ด๋„
โ—ฆ
๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ํŒŒ์ด์ฌ ์Šคํƒ€์ผ๋กœ ์ฝ”๋”ฉํ•œ๋‹ค
โ€ข
ํšจ์œจ
โ—ฆ
๋‹จ์ˆœ for loop append๋ณด๋‹ค list๊ฐ€ ์กฐ๊ธˆ ๋” ๋น ๋ฅด๋‹ค
โ—ฆ
์ต์ˆ™ํ•ด์ง€๋ฉด ์ฝ”๋“œ๋„ ์งง์•„์ง„๋‹ค
โ€ข
์“ฐ๋ฉด ์™ ์ง€ ์ฝ”๋“œ ์ž˜ ์งœ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค

Split & Join

Split ํ•จ์ˆ˜

โ€ข
string type์˜ ๊ฐ’์„ โ€œ๊ธฐ์ค€๊ฐ’"์œผ๋กœ ๋‚˜๋ˆ ์„œ List ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜

List Comprehension

โ€ข
๊ธฐ์กด List ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํžˆ ๋‹ค๋ฅธ List๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ๋ฒ•
โ€ข
ํฌ๊ด„์ ์ธ List, ํฌํ•จ๋˜๋Š” ๋ฆฌ์ŠคํŠธ๋ผ๋Š” ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋จ
โ€ข
ํŒŒ์ด์ฌ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜
โ€ข
์ผ๋ฐ˜์ ์œผ๋กœ for + append ๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค

enumerate & zip

โ€ข
enumerate : list์˜ element ๋ฅผ ์ถ”์ถœํ•  ๋•Œ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์—ฌ์„œ ์ถ”์ถœ
โ€ข
zip : ๋‘ ๊ฐœ์˜ list์˜ ๊ฐ’์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ถ”์ถœํ•จ

Lambda & Map & Reduce

Lambda

โ€ข
ํ•จ์ˆ˜ ์ด๋ฆ„ ์—†์ด, ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์“ธ ์ˆ˜ ์žˆ๋Š” ์ต๋ช…ํ•จ์ˆ˜
โ€ข
์ˆ˜ํ•™์˜ ๋žŒ๋‹ค ๋Œ€์ˆ˜์—์„œ ์œ ๋ž˜ํ•จ

Map

โ€ข
๋‘ ๊ฐœ ์ด์ƒ์˜ list์—๋„ ์ ์šฉ ๊ฐ€๋Šฅํ•จ
โ€ข
if filter ๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅ
โ€ข
python3 ๋Š” iteration์„ ์ƒ์„ฑ โ†’ list์„ ๋ถ™์—ฌ์ค˜์•ผ list ์‚ฌ์šฉ๊ฐ€๋Šฅ
โ€ข
์‹คํ–‰์‹œ์ ์˜ ๊ฐ’์„ ์ƒ์„ฑ, ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ 

Reduce

โ€ข
map function ๊ณผ ๋‹ฌ๋ฆฌ list์— ๋˜‘๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•ด์„œ ํ†ตํ•ฉ
โ€ข
๋”ฅ๋Ÿฌ๋‹์—์„œ ๋งŽ์ด ์‚ฌ์šฉ

Iterable objects

โ€ข
Sequenceํ˜• ์ž๋ฃŒํ˜•์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ถ”์ถœํ•˜๋Š” object
โ€ข
๋‚ด๋ถ€์  ๊ตฌํ˜„์œผ๋กœ __ iter __ ์™€ __ next __ ๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค
โ€ข
iter() ์™€ next() ํ•จ์ˆ˜๋กœ iterable ๊ฐ์ฒด๋ฅผ iterator object๋กœ ์‚ฌ์šฉ

generator

โ€ข
iterable object๋ฅผ ํŠน์ˆ˜ํ•œ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•ด์ฃผ๋Š” ํ•จ์ˆ˜
โ€ข
element๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ์‹œ์ ์— ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ˜ํ™˜
: yield๋ฅผ ์‚ฌ์šฉํ•ด ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ element ๋งŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค
โ€ข
list comprehension ๊ณผ ์œ ์‚ฌํ•œ ํ˜•ํƒœ๋กœ generator ํ˜•ํƒœ์˜ list ์ƒ์„ฑ
โ€ข
generator expression ์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ๋„ ๋ถ€๋ฅธ๋‹ค
โ€ข
[ ] ๋Œ€์‹  () ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„
์™œ ์‚ฌ์šฉ?
โ€ข
์ผ๋ฐ˜์ ์ธ iterator๋Š” generator์— ๋ฐ˜ํ•ด ํ›จ์”ฌ ํฐ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰ ์‚ฌ์šฉ
์–ธ์ œ ์‚ฌ์šฉ?
โ€ข
list ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋Š” generator๋กœ ๋งŒ๋“ค์–ด๋ผ!
โ—ฆ
์ฝ๊ธฐ ์‰ฌ์šด ์žฅ์ , ์ค‘๊ฐ„ ๊ณผ์ •์—์„œ loop ์ด ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์„ ๋•Œ!
โ€ข
ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ๋Š” Generator expression์„ ๊ณ ๋ คํ•˜๋ผ
โ—ฆ
๋ฐ์ดํ„ฐ๊ฐ€ ์ปค๋„ ์ฒ˜๋ฆฌ์˜ ์–ด๋ ค์›€์ด ์—†์Œ
โ€ข
ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ๋„ generator ๋ฅผ ์“ฐ์ž

function passing arguments

โ€ข
ํ•จ์ˆ˜์— ์ž…๋ ฅ๋˜๋Š” arguments ์˜ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ
1.
Keyword arguments
โ€ข
ํ•จ์ˆ˜์— ์ž…๋ ฅ๋˜๋Š” parameter์˜ ๋ณ€์ˆ˜๋ช…์„ ์‚ฌ์šฉ, arguments ๋ฅผ ๋„˜๊น€
2.
Default arguments
โ€ข
parameter์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉ, ์ž…๋ ฅํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’ ์ถœ๋ ฅ
3.
Variable-length asterisk
โ€ข
๊ฐ€๋ณ€์ธ์ž using asterisk
โ€ข
๊ฐ€๋ณ€์ธ์ž
โ—ฆ
๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ง€์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜์˜ parameter๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•
โ—ฆ
Keyword arguments ์™€ ํ•จ๊ป˜, argument ์ถ”๊ฐ€๊ฐ€ ๊ฐ€๋Šฅ
โ—ฆ
Asterisk(*) ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜์˜ parameter ๋ฅผ ํ‘œ์‹œํ•จ
โ—ฆ
์ž…๋ ฅ๋œ ๊ฐ’์€ tuple type ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
โ—ฆ
๊ฐ€๋ณ€์ธ์ž๋Š” ์˜ค์ง ํ•œ ๊ฐœ๋งŒ ๋งจ ๋งˆ์ง€๋ง‰ parameter ์œ„์น˜์— ์‚ฌ์šฉ๊ฐ€๋Šฅ
โ—ฆ
๊ฐ€๋ณ€์ธ์ž๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ *args ๋ฅผ ๋ณ€์ˆ˜๋ช…์œผ๋กœ ์‚ฌ์šฉ
โ—ฆ
๊ธฐ์กด parameter ์ดํ›„์— ๋‚˜์˜ค๋Š” ๊ฐ’์„ tuple๋กœ ์ €์žฅํ•จ

Keyword variable-length (ํ‚ค์›Œ๋“œ ๊ฐ€๋ณ€์ธ์ž)

โ€ข
Parameter ์ด๋ฆ„์„ ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•
โ€ข
asterisk(*) ๋‘๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜์˜ parameter ๋ฅผ ํ‘œ์‹œํ•จ
โ€ข
์ž…๋ ฅ๋œ ๊ฐ’์€ dict type์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
โ€ข
๊ฐ€๋ณ€์ธ์ž๋Š” ์˜ค์ง ํ•œ๊ฐœ๋งŒ ๊ธฐ์กด ๊ฐ€๋ณ€์ธ์ž ๋‹ค์Œ์— ์‚ฌ์šฉ
โ€ข
๋จธ์‹ ๋Ÿฌ๋‹์—์„œ ๋งŽ์ด ์‚ฌ์šฉ

asterisk

โ€ข
ํ”ํžˆ ์•Œ๊ณ  ์žˆ๋Š” * ๋ฅผ ์˜๋ฏธํ•œ๋‹ค
โ€ข
๋‹จ์ˆœ๊ณฑ์…ˆ, ์ œ๊ณฑ์—ฐ์‚ฐ, ๊ฐ€๋ณ€์ธ์ž ํ™œ์šฉ ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค

asterisk - unpacking a container

โ€ข
tuple, dict ๋“ฑ ์ž๋ฃŒํ˜•์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฐ’์„ unpacking
โ€ข
ํ•จ์ˆ˜์˜ ์ž…๋ ฅ๊ฐ’, zip ๋“ฑ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ