1. ํŠœํ”Œ  tuple

 

๐Ÿ“  ๋ฆฌ์ŠคํŠธ์™€ ๋น„์Šทํ•œ ์ž๋ฃŒํ˜•์ด๋‚˜ ํ•œ๋ฒˆ ๊ฒฐ์ •๋œ ์š”์†Œ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด ๋‹ค๋ฅด๋‹ค.

       โžก๏ธ  ์ด๋ฏธ ์ €์žฅ๋œ ๊ฐ’ ์ด์™ธ์—๋Š” ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ

๐Ÿ“  ๋ฆฌ์ŠคํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ ์š”์†Œ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์ธ๋ฑ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜๊ณ  ์Šฌ๋ผ์ด์‹ฑ๋„ ์ง€์›
๐Ÿ“  ํŠœํ”Œ์€ ์†Œ๊ด„ํ˜ธ() ๋‚˜ tuple() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์ƒ์„ฑ
๐Ÿ“  ๊ฐ’๋“ค์„ ์ฝค๋งˆ(,)๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ „๋‹ฌํ•˜๋ฉด ์ž๋™์œผ๋กœ ํŠœํ”Œ์ด ์ƒ์„ฑ

t1 = (1,2,3)
print(t1)  # (1,2,3)

# ๊ด„ํ˜ธ ์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ
t2 = 1,2,3
print(t2)  #(1,2,3)

def sample():
   return (1,2)

print(sample())  #(1, 2)
# ๊ฐ’์ด 2๊ฐœ ๋ฐ˜ํ™˜๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํŠœํ”Œ์„ ์ž๋™์œผ๋กœ ์ ์šฉํ•ด์„œ ๋ฐ˜ํ™˜ํ•จ

# ๋ฆฌ์ŠคํŠธ๋ฅผ ํŠœํ”Œ๋กœ ๋ณ€๊ฒฝ
t3 = tuple([100, 3.14, 'hello'])
print(t3)  # (100, 3.14, 'hello')

# ๊ฐ’์„ 1๊ฐœ๋งŒ ๋ณด๊ด€ํ•˜๋Š” ํŠœํ”Œ์„ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ์—๋Š” ๊ฐ’๊ณผ ์ฝค๋งˆ(,)๋ฅผ ๋ฐ˜๋“œ์‹œ ํ•จ๊ป˜ ์ž‘์„ฑ
t4 = (100)
print(t4)  # 100  / ๊ฐ’์œผ๋กœ ์ธ์‹
print(type(t4))  # <class 'int'>

t5 = (100, )
print(t5)  # (100, ) / ํŠœํ”Œ๋กœ ์ธ์‹
print(type(t5))  # <class 'tuple'>

# ๊ฐ’์„ swap ๊ตํ™˜
a = 10
b = 20
print(a, b)  # 10 20
a, b = b, a  # (a, b) = (b, a)
print(a, b)  # 20 10

a, b = 100, 'ํ™๊ธธ๋™'
print(a)  # 100
print(b)  # ํ™๊ธธ๋™

 

 


 

2. ๋žŒ๋‹ค  lambda

 

๐Ÿ“  ํ•จ์ˆ˜๋ฅผ ์งง๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ํŒŒ์ด์ฌ์˜ ๋ฌธ๋ฒ•

 

1)  ์ฝœ๋ฐฑ ํ•จ์ˆ˜  callback function

    โšก๏ธ  ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜

# ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์€ ํ•จ์ˆ˜๋ฅผ 10๋ฒˆ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜
def call_10_times(func):
    for i in range(10):
        func()
        
# ๊ฐ„๋‹จํ•œ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜
def print_hello():
    print("์•ˆ๋…•ํ•˜์„ธ์š”")
    
# ์กฐํ•ฉํ•˜๊ธฐ
call_10_times(print_hello)
# -> print_hello() ํ•จ์ˆ˜๋ฅผ 10๋ฒˆ ์‹คํ–‰

 


 

2) filter() ํ•จ์ˆ˜์™€ map() ํ•จ์ˆ˜

โšก๏ธ  ํ•จ์ˆ˜๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ํ‘œ์ค€ํ•จ์ˆ˜

โšก๏ธ  map() ํ•จ์ˆ˜๋Š” ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ํ•จ์ˆ˜์— ๋„ฃ๊ณ  ๋ฆฌํ„ด๋œ ๊ฐ’์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌ์„ฑ

โšก๏ธ  filter() ํ•จ์ˆ˜๋Š” ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ํ•จ์ˆ˜์— ๋„ฃ๊ณ  ๋ฆฌํ„ด๋œ ๊ฐ’์ด True์ธ ๊ฒƒ์œผ๋กœ, ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌ์„ฑ

# map()
map(ํ•จ์ˆ˜, ๋ฆฌ์ŠคํŠธ)

# filter()
filter(ํ•จ์ˆ˜, ๋ฆฌ์ŠคํŠธ)
def power(item):
    return item * item
def under_3(item):
    return item < 3

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

# map() ์‚ฌ์šฉ
output_a = map(power, list_input_a)
print(output_a)  # <map object at 0x104c228f0>
print(list(output_a))  # [1, 4, 9, 16, 25]

# filter() ์‚ฌ์šฉ
output_b = filter(under_3, list_input_a)
print(output_b)  # <filter object at 0x104c22800>
print(list(output_b))  # [1, 2]

 

  ๐Ÿ‘พ  <map object> ์™€ <filter object> ๋ฅผ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 


 

3) ๋žŒ๋‹ค์˜ ๊ฐœ๋…

โšก๏ธ  ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋œปํ•จ

# ๊ธฐ๋ณธํ˜•์‹
lambda ๋งค๊ฐœ๋ณ€์ˆ˜: ๋ฆฌํ„ด๊ฐ’
list_input_a = [1, 2, 3, 4, 5]

# map() ํ•จ์ˆ˜
output_a = map(lambda x: x * x, list_input_a)
print(output_a)  # <map object at 0x102d12860>
print(list(output_a))  # [1, 4, 9, 16, 25]

# filter() ํ•จ์ˆ˜
output_b = filter(lambda x: x < 3, list_input_a)
print(output_b)  # <filter object at 0x102d61810>
print(list(output_b))  # [1, 2]

 


 

3. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ  generator

๐Ÿ“  ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ

๐Ÿ“  ํ•จ์ˆ˜ ๋‚ด๋ถ€์— yield ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๊ฐ€ ๋œ๋‹ค.

๐Ÿ“  ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ ๋‹ฌ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด๋„ ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

 

def test():
    print("ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค")
    yield "test"
    
print("A ์ง€์  ํ†ต๊ณผ")  # A ์ง€์  ํ†ต๊ณผ
test()

print("B ์ง€์  ํ†ต๊ณผ")  # B ์ง€์  ํ†ต๊ณผ
test()
print(test())  # <generator object test at 0x104ceda10>

 

  ๐Ÿ“Œ  ์œ„ ์˜ˆ์ œ์—์„œ test()ํ•จ์ˆ˜๋Š” ์ถœ๋ ฅ๋˜์ง€ ์•Š๊ณ , ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

  ๐Ÿ“Œ  ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ๊ฐ์ฒด๋Š” next() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ํ•จ์ˆ˜ ๋‚ด๋ถ€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

          โžก๏ธ  ์ด๋•Œ yield ํ‚ค์›Œ๋“œ ๋ถ€๋ถ„๊นŒ์ง€๋งŒ ์‹คํ–‰ํ•˜๋ฉฐ, next() ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’์œผ๋กœ yield ํ‚ค์›Œ๋“œ ๋’ค์— ์ž…๋ ฅํ•œ ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค

 

def test():
    print("A ์ง€์  ํ†ต๊ณผ")
    yield 1
    print("B ์ง€์  ํ†ต๊ณผ")
    yield 2
    print("C ์ง€์  ํ†ต๊ณผ")
  
output = test()

# next() ํ•จ์ˆ˜ ํ˜ธ์ถœ
print("D ์ง€์  ํ†ต๊ณผ")
a = next(output)
print(a)
print("E ์ง€์  ํ†ต๊ณผ")
b = next(output)
print(b)
print("F ์ง€์  ํ†ต๊ณผ")
c = next(output)
print(c)

next(output)

 

 

 

๐Ÿ“Œ  next() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๋‚ด์šฉ์ด ์ง„ํ–‰

๐Ÿ“Œ  next() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ์ดํ›„ yield ํ‚ค์›Œ๋“œ๋ฅผ ๋งŒ๋‚˜์ง€ ๋ชปํ•˜๊ณ  ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๋ฉด StopIteration ์ด๋ผ๋Š” ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ

 

 

 

 

 

 

 

 

 

[ ๋‚ด์šฉ์ฐธ๊ณ  : ์ฑ… 'ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ํŒŒ์ด์ฌ' ]

+ Recent posts