[python] collection

Updated:

Categories:

Tags: , ,

๐Ÿ“Œ ๊ฐœ์ธ์ ์ธ ๊ณต๊ฐ„์œผ๋กœ ๊ณต๋ถ€๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ๋ณต์Šตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
์ •ํ™•ํ•˜์ง€ ์•Š์€ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ๋ฐ”๋ž๋‹ˆ๋‹ค :๐Ÿ˜ธ
[ํ‹€๋ฆฐ ๋‚ด์šฉ์€ ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๋ณต๋ฐ›์œผ์‹ค๊ฑฐ์—์š”]

ํŠœํ”Œ(Tuple)

ํŒŒ์ด์ฌ์˜ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜• ์ค‘ ํ•˜๋‚˜๋กœ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

์†Œ๊ด„ํ˜ธ ()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•˜๋ฉฐ, ๊ฐ ์š”์†Œ๋Š” ์‰ผํ‘œ ,๋กœ ๊ตฌ๋ถ„

๋ฆฌ์ŠคํŠธ์™€ ํŠœํ”Œ์˜ ์ฐจ์ด

  1. ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ (Mutability)
  • ๋ฆฌ์ŠคํŠธ๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ(mutable) ์ฆ‰, ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŠœํ”Œ์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ(immutable) ์ฆ‰, ํŠœํ”Œ์ด ์ƒ์„ฑ๋œ ํ›„์—๋Š” ์š”์†Œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.
  1. ์‚ฌ์šฉ ์šฉ๋„
  • ๋ฆฌ์ŠคํŠธ๋Š” ์š”์†Œ์˜ ์ถ”๊ฐ€, ์‚ญ์ œ, ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ๋œ๋‹ค.
  • ํŠœํ”Œ์€ ์š”์†Œ๊ฐ€ ๊ณ ์ •๋œ ๊ฒฝ์šฐ(๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„์•ผ ํ•  ๋ฐ์ดํ„ฐ)๋ฅผ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋ฌถ์–ด์„œ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜, ๊ณ ์ •๋œ ์„ค์ • ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ ํŠœํ”Œ์ด ์œ ์šฉํ•˜๋‹ค.
  1. ์„ฑ๋Šฅ
1
2
3
4
5
6
7
import sys

list_example = [1, 2, 3, 4, 5]
tuple_example = (1, 2, 3, 4, 5)

print(sys.getsizeof(list_example))  # ์ถœ๋ ฅ: ๋ฆฌ์ŠคํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰
print(sys.getsizeof(tuple_example))  # ์ถœ๋ ฅ: ํŠœํ”Œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰
  • ํŠœํ”Œ์€ ๋ฆฌ์ŠคํŠธ๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ ๊ณ , ์ƒ์„ฑ ์‹œ๊ฐ„์ด ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค. ์ด๋Š” ํŠœํ”Œ์ด ๋ถˆ๋ณ€์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ์ตœ์ ํ™” ๋•๋ถ„์ž…๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ, ๋ณ€๊ฒฝ์ด ํ•„์š” ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ๋Š” ํŠœํ”Œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ ๋ฉด์—์„œ ์œ ๋ฆฌํ•˜๋‹ค.
  1. ๋ฉ”์„œ๋“œ
    • ๋ฆฌ์ŠคํŠธ๋Š” ์š”์†Œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, append(), extend(), insert(), remove(), pop(), clear(), sort(), reverse() ๋“ฑ์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค.
    • ํŠœํ”Œ์€ ๋ถˆ๋ณ€์ด๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์ ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๋ฉ”์„œ๋“œ๋Š” count()์™€ index()์ž…๋‹ˆ๋‹ค.
  2. ์ž๋ฃŒํ˜•์˜ ๋ถˆ๋ณ€์„ฑ
    • ํŠœํ”Œ์€ ๋ถˆ๋ณ€์ด๋ฏ€๋กœ, ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฆฌ์ŠคํŠธ๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  3. ์žฅ๋‹จ์ 
    • ๋ฆฌ์ŠคํŠธ์˜ ์žฅ๋‹จ์ 
    • ํŠœํ”Œ์˜ ์žฅ๋‹จ์ 
  4. ๋ฆฌ์ŠคํŠธ์™€ ํŠœํ”Œ์„ ์„ ํƒํ•˜๋Š” ๊ธฐ์ค€
    • ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ์—ฌ๋ถ€: ์š”์†Œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํŠœํ”Œ์„ ์‚ฌ์šฉ
    • ์„ฑ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ: ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋น ๋ฅธ ์ƒ์„ฑ ์†๋„๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํŠœํ”Œ์„ ์‚ฌ์šฉ
    • ์‚ฌ์šฉ ์šฉ๋„: ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋ฌถ์–ด์„œ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜, ์„ค์ • ๊ฐ’์„ ๊ณ ์ •ํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๊ฒฝ์šฐ ํŠœํ”Œ์„ ์‚ฌ์šฉ

ํŠœํ”Œ

  1. ํŠœํ”Œ ์ƒ์„ฑ
    • ๊ธฐ๋ณธ ์ƒ์„ฑ ๋ฐฉ๋ฒ•

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
        # ๋นˆ ํŠœํ”Œ ์ƒ์„ฑ
        empty_tuple = ()
              
        # ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ํŠœํ”Œ ์ƒ์„ฑ
        fruit_tuple = ("์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์ฒด๋ฆฌ")
              
        # ํŠœํ”Œ์€ ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
        mixed_tuple = (1, "์•ˆ๋…•", 3.14, True)
              
      
    • ์š”์†Œ๊ฐ€ ํ•˜๋‚˜์ธ ํŠœํ”Œ ์ƒ์„ฑ

      1
      2
      3
      4
      5
      6
      
        single_element_tuple = (1,)
        not_a_tuple = (1)
              
        print(type(single_element_tuple))  # ์ถœ๋ ฅ: <class 'tuple'>
        print(type(not_a_tuple))  # ์ถœ๋ ฅ: <class 'int'>
              
      
    • ํŠœํ”Œ ์ƒ์„ฑ ์‹œ ๊ด„ํ˜ธ ์ƒ๋žต

      1
      2
      3
      4
      
        # ๊ด„ํ˜ธ๋ฅผ ์ƒ๋žตํ•˜์—ฌ ํŠœํ”Œ ์ƒ์„ฑ
        fruit_tuple = "์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์ฒด๋ฆฌ"
        print(fruit_tuple)  # ์ถœ๋ ฅ: ('์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜', '์ฒด๋ฆฌ')
        print(type(fruit_tuple))  # ์ถœ๋ ฅ: <class 'tuple'>
      
  2. ํŠœํ”Œ ์ ‘๊ทผ ๋ฐ ์Šฌ๋ผ์ด์‹ฑ
    • ํŠœํ”Œ์˜ ์š”์†Œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผ๊ฐ€๋Šฅ, ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.
    • ์Šฌ๋ผ์ด์‹ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠœํ”Œ์˜ ์ผ๋ถ€๋ฅผ ์ถ”์ถœ๊ฐ€๋Šฅ
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
     fruit_tuple = ("์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์ฒด๋ฆฌ")
        
     # ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ ์ ‘๊ทผ
     print(fruit_tuple[0])  # ์ถœ๋ ฅ: ์‚ฌ๊ณผ
     print(fruit_tuple[1])  # ์ถœ๋ ฅ: ๋ฐ”๋‚˜๋‚˜
     print(fruit_tuple[2])  # ์ถœ๋ ฅ: ์ฒด๋ฆฌ
        
     # ์Œ์ˆ˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ ์ ‘๊ทผ
     print(fruit_tuple[-1])  # ์ถœ๋ ฅ: ์ฒด๋ฆฌ
     print(fruit_tuple[-2])  # ์ถœ๋ ฅ: ๋ฐ”๋‚˜๋‚˜
     print(fruit_tuple[-3])  # ์ถœ๋ ฅ: ์‚ฌ๊ณผ
        
     # ์Šฌ๋ผ์ด์‹ฑ
     print(fruit_tuple[0:2])  # ์ถœ๋ ฅ: ('์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜')
     print(fruit_tuple[1:])   # ์ถœ๋ ฅ: ('๋ฐ”๋‚˜๋‚˜', '์ฒด๋ฆฌ')
     print(fruit_tuple[:2])   # ์ถœ๋ ฅ: ('์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜')
     print(fruit_tuple[:])    # ์ถœ๋ ฅ: ('์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜', '์ฒด๋ฆฌ')
    
  3. ํŠœํ”Œ ์—ฐ์‚ฐ
    • ํŠœํ”Œ์€ + ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐํ•ฉ(concatenate)ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, `` ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต(repeat)๊ฐ€๋Šฅ
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
     fruit_tuple = ("์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜")
     veg_tuple = ("๋‹น๊ทผ", "๋ธŒ๋กœ์ฝœ๋ฆฌ")
        
     # ํŠœํ”Œ ๊ฒฐํ•ฉ
     combined_tuple = fruit_tuple + veg_tuple
     print(combined_tuple)  # ์ถœ๋ ฅ: ('์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜', '๋‹น๊ทผ', '๋ธŒ๋กœ์ฝœ๋ฆฌ')
        
     # ํŠœํ”Œ ๋ฐ˜๋ณต
     repeated_tuple = fruit_tuple * 2
     print(repeated_tuple)  # ์ถœ๋ ฅ: ('์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜', '์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜')
    
  4. ํŠœํ”Œ์˜ ๋ถˆ๋ณ€์„ฑ
    • ํŠœํ”Œ์€ ํ•œ ๋ฒˆ ์ƒ์„ฑ๋˜๋ฉด ๊ทธ ์š”์†Œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํŠœํ”Œ ๋‚ด์˜ ๊ฐ€๋ณ€ ๊ฐ์ฒด(์˜ˆ: ๋ฆฌ์ŠคํŠธ)๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

      1
      2
      3
      4
      5
      6
      7
      
        # ์š”์†Œ ๋ณ€๊ฒฝ ์‹œ๋„ (์˜ค๋ฅ˜ ๋ฐœ์ƒ)
        # fruit_tuple[0] = "์˜ค๋ Œ์ง€"  # TypeError: 'tuple' object does not support item assignment
              
        # ๊ฐ€๋ณ€ ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•œ ํŠœํ”Œ
        nested_list = ([1, 2, 3], [4, 5, 6])
        nested_list[0][1] = 9
        print(nested_list)  # ์ถœ๋ ฅ: ([1, 9, 3], [4, 5, 6])
      
  5. ํŠœํ”Œ์˜ ๋ฉ”์„œ๋“œ
    • ํŠœํ”Œ์€ ๋ฆฌ์ŠคํŠธ์™€ ๋‹ฌ๋ฆฌ ๋ช‡ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ count()์™€ index() ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค.
    • count() : ํŠœํ”Œ์—์„œ ํŠน์ • ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ผ๋‹ค.

      1
      2
      
        fruit_tuple = ("์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์ฒด๋ฆฌ", "์‚ฌ๊ณผ")
        print(fruit_tuple.count("์‚ฌ๊ณผ"))  # ์ถœ๋ ฅ: 2
      
    • index() : ํŠœํ”Œ์—์„œ ํŠน์ • ์š”์†Œ์˜ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜

      1
      2
      
        fruit_tuple = ("์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์ฒด๋ฆฌ", "์‚ฌ๊ณผ")
        print(fruit_tuple.index("๋ฐ”๋‚˜๋‚˜"))  # ์ถœ๋ ฅ: 1
      
  6. ํŠœํ”Œ ์–ธํŒจํ‚น

    ์–ธํŒจํ‚น์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠœํ”Œ์˜ ๊ฐ ์š”์†Œ๋ฅผ ๋ณ„๋„์˜ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
     fruit_tuple = ("์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์ฒด๋ฆฌ")
        
     # ํŠœํ”Œ ์–ธํŒจํ‚น
     apple, banana, cherry = fruit_tuple
     print(apple)  # ์ถœ๋ ฅ: ์‚ฌ๊ณผ
     print(banana)  # ์ถœ๋ ฅ: ๋ฐ”๋‚˜๋‚˜
     print(cherry)  # ์ถœ๋ ฅ: ์ฒด๋ฆฌ
        
     # ์ผ๋ถ€ ์š”์†Œ ๋ฌด์‹œํ•˜๊ธฐ (์–ธ๋”์Šค์ฝ”์–ด ์‚ฌ์šฉ)
     _, banana, _ = fruit_tuple
     print(banana)  # ์ถœ๋ ฅ: ๋ฐ”๋‚˜๋‚˜
    
  7. ์ค‘์ฒฉ๋œ ํŠœํ”Œ

    ์ค‘์ฒฉ๋œ ํŠœํ”Œ์€ ํŠœํ”Œ ๋‚ด์— ๋˜ ๋‹ค๋ฅธ ํŠœํ”Œ์„ ํฌํ•จํ•˜๋Š” ํŠœํ”Œ

    1
    2
    3
    
     # ์ค‘์ฒฉ๋œ ํŠœํ”Œ ์ ‘๊ทผ
     print(nested_tuple[0])  # ์ถœ๋ ฅ: ('a', 'b', 'c')
     print(nested_tuple[1][2])  # ์ถœ๋ ฅ: 3
    
  8. ํŠœํ”Œ๊ณผ ๋ฆฌ์ŠคํŠธ ๋ณ€ํ™˜

    ํŠœํ”Œ์„ ๋ฆฌ์ŠคํŠธ๋กœ, ๋ฆฌ์ŠคํŠธ๋ฅผ ํŠœํ”Œ๋กœ ๋ณ€ํ™˜๊ฐ€๋Šฅ

    1
    2
    3
    4
    5
    6
    7
    8
    
     fruit_tuple = ("์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์ฒด๋ฆฌ")
     fruit_list = list(fruit_tuple)
     print(fruit_list)  # ์ถœ๋ ฅ: ['์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜', '์ฒด๋ฆฌ']
        
     # ๋ฆฌ์ŠคํŠธ๋ฅผ ํŠœํ”Œ๋กœ ๋ณ€ํ™˜
     fruit_list = ["์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์ฒด๋ฆฌ"]
     fruit_tuple = tuple(fruit_list)
     print(fruit_tuple)  # ์ถœ๋ ฅ: ('์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜', '์ฒด๋ฆฌ')
    

์˜ˆ์ œ ๋ฐ ์‹ค์Šต ๋ฌธ์ œ

  1. ๋ฌธ์ œ 1: ๋‘ ๊ฐœ์˜ ํŠœํ”Œ์„ ํ•ฉ์น˜๋Š” ํ•จ์ˆ˜ ์ž‘์„ฑ

    1
    2
    3
    4
    5
    6
    7
    
     def merge_tuples(tuple1, tuple2):
         return tuple1 + tuple2
        
     tuple1 = (1, 2, 3)
     tuple2 = (4, 5, 6)
     merged_tuple = merge_tuples(tuple1, tuple2)
     print(merged_tuple)  # ์ถœ๋ ฅ: (1, 2, 3, 4, 5, 6)
    
  2. ๋ฌธ์ œ 2: ํŠœํ”Œ์—์„œ ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๋Š” ํ•จ์ˆ˜ ์ž‘์„ฑ

    1
    2
    3
    4
    5
    6
    7
    
     def find_max_min(t):
         return max(t), min(t)
        
     numbers = (5, 2, 9, 1, 5, 6)
     max_value, min_value = find_max_min(numbers)
     print(f"์ตœ๋Œ€๊ฐ’: {max_value}, ์ตœ์†Œ๊ฐ’: {min_value}")  # ์ถœ๋ ฅ: ์ตœ๋Œ€๊ฐ’: 9, ์ตœ์†Œ๊ฐ’: 1
        
    
  3. ๋ฌธ์ œ 3: ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ๋ฅผ ํŠœํ”Œ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ํ•ด๋‹น ํŠœํ”Œ์˜ ์š”์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜ ์ž‘์„ฑ

    1
    2
    3
    4
    5
    6
    
     def list_to_tuple(lst):
         return tuple(lst)
        
     lst = [10, 20, 30, 40, 50]
     t = list_to_tuple(lst)
     print(t)  # ์ถœ๋ ฅ: (10, 20, 30, 40, 50)
    

๋ฆฌ์ŠคํŠธ(list)

  • ํŒŒ์ด์ฌ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒํ˜• ์ค‘ ํ•˜๋‚˜๋กœ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด๋‹ค.
  • ๋Œ€๊ด„ํ˜ธ([])๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•˜๋ฉฐ, ๊ฐ ์š”์†Œ๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.
  • ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋Š” ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•(์ •์ˆ˜, ๋ฌธ์ž์—ด, ๋‹ค๋ฅธ ๋ฆฌ์ŠคํŠธ ๋“ฑ)์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ์— ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์„ ํ˜ผํ•ฉ๊ฐ€๋Šฅ.

๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ

1
2
3
4
5
6
7
8
9
10
11
# ๋นˆ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
empty_list = []

# ์ •์ˆ˜ํ˜• ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
numbers = [1, 2, 3, 4, 5]

# ๋ฌธ์ž์—ด ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
fruits = ["์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์ฒด๋ฆฌ"]

# ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์„ ํฌํ•จํ•˜๋Š” ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
mixed_list = [1, "์•ˆ๋…•", True, [1, 2, 3]]

๋ฆฌ์ŠคํŠธ ์ ‘๊ทผ ๋ฐ ์Šฌ๋ผ์ด์‹ฑ

  • ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผ๊ฐ€๋Šฅ ํ•˜๊ณ  ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.
  • ์Œ์ˆ˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ์˜ ๋์—์„œ๋ถ€ํ„ฐ ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
fruits = ["์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์ฒด๋ฆฌ"]

# ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ ์ ‘๊ทผ
print(fruits[0])  # ์ถœ๋ ฅ: ์‚ฌ๊ณผ
print(fruits[1])  # ์ถœ๋ ฅ: ๋ฐ”๋‚˜๋‚˜
print(fruits[2])  # ์ถœ๋ ฅ: ์ฒด๋ฆฌ

# ์Œ์ˆ˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ ์ ‘๊ทผ
print(fruits[-1])  # ์ถœ๋ ฅ: ์ฒด๋ฆฌ
print(fruits[-2])  # ์ถœ๋ ฅ: ๋ฐ”๋‚˜๋‚˜
print(fruits[-3])  # ์ถœ๋ ฅ: ์‚ฌ๊ณผ

# ๋ฆฌ์ŠคํŠธ ์Šฌ๋ผ์ด์‹ฑ
print(fruits[0:2])  # ์ถœ๋ ฅ: ['์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜']
print(fruits[1:])   # ์ถœ๋ ฅ: ['๋ฐ”๋‚˜๋‚˜', '์ฒด๋ฆฌ']
print(fruits[:2])   # ์ถœ๋ ฅ: ['์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜']
print(fruits[:])    # ์ถœ๋ ฅ: ['์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜', '์ฒด๋ฆฌ']

๋ฆฌ์ŠคํŠธ ์ˆ˜์ • ๋ฐ ์‚ญ์ œ

  • ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • append(), extend(), insert(), remove(), pop(), clear() ๋“ฑ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆ˜์ • ๊ฐ€๋Šฅ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
fruits = ["์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์ฒด๋ฆฌ"]

# ์š”์†Œ ์ˆ˜์ •
fruits[1] = "๋ธ”๋ฃจ๋ฒ ๋ฆฌ"
print(fruits)  # ์ถœ๋ ฅ: ['์‚ฌ๊ณผ', '๋ธ”๋ฃจ๋ฒ ๋ฆฌ', '์ฒด๋ฆฌ']

# ์š”์†Œ ์ถ”๊ฐ€
fruits.append("์˜ค๋ Œ์ง€")
print(fruits)  # ์ถœ๋ ฅ: ['์‚ฌ๊ณผ', '๋ธ”๋ฃจ๋ฒ ๋ฆฌ', '์ฒด๋ฆฌ', '์˜ค๋ Œ์ง€']

# ์š”์†Œ ์‚ฝ์ž…
fruits.insert(1, "ํ‚ค์œ„")
print(fruits)  # ์ถœ๋ ฅ: ['์‚ฌ๊ณผ', 'ํ‚ค์œ„', '๋ธ”๋ฃจ๋ฒ ๋ฆฌ', '์ฒด๋ฆฌ', '์˜ค๋ Œ์ง€']

# ์š”์†Œ ์‚ญ์ œ
fruits.remove("๋ธ”๋ฃจ๋ฒ ๋ฆฌ")
print(fruits)  # ์ถœ๋ ฅ: ['์‚ฌ๊ณผ', 'ํ‚ค์œ„', '์ฒด๋ฆฌ', '์˜ค๋ Œ์ง€']

# ๋งˆ์ง€๋ง‰ ์š”์†Œ ์‚ญ์ œ
fruits.pop()
print(fruits)  # ์ถœ๋ ฅ: ['์‚ฌ๊ณผ', 'ํ‚ค์œ„', '์ฒด๋ฆฌ']

# ํŠน์ • ์ธ๋ฑ์Šค์˜ ์š”์†Œ ์‚ญ์ œ
fruits.pop(1)
print(fruits)  # ์ถœ๋ ฅ: ['์‚ฌ๊ณผ', '์ฒด๋ฆฌ']

# ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”
fruits.clear()
print(fruits)  # ์ถœ๋ ฅ: []

๋ฆฌ์ŠคํŠธ ๋ฉ”์„œ๋“œ

  1. ์š”์†Œ ์ถ”๊ฐ€

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
     numbers = [1, 2, 3]
     numbers.append(4)
     print(numbers)  # ์ถœ๋ ฅ: [1, 2, 3, 4]
        
     numbers.extend([5, 6])
     print(numbers)  # ์ถœ๋ ฅ: [1, 2, 3, 4, 5, 6]
        
     numbers.insert(3, 2.5)
     print(numbers)  # ์ถœ๋ ฅ: [1, 2, 3, 2.5, 4, 5, 6]
    
    • append(x): ๋ฆฌ์ŠคํŠธ์˜ ๋์— ์š”์†Œ x๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
    • extend(iterable): ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฆฌ์ŠคํŠธ์˜ ๋์— ์ถ”๊ฐ€ ํ•œ๋‹ค.
    • insert(i, x): ์ธ๋ฑ์Šค i์— ์š”์†Œ x๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.
  2. ์š”์†Œ ์‚ญ์ œ

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
     numbers = [1, 2, 3, 2, 4, 5]
     numbers.remove(2)
     print(numbers)  # ์ถœ๋ ฅ: [1, 3, 2, 4, 5]
        
     numbers.pop(2)
     print(numbers)  # ์ถœ๋ ฅ: [1, 3, 4, 5]
        
     numbers.clear()
     print(numbers)  # ์ถœ๋ ฅ: []
    
    • remove(x): ๋ฆฌ์ŠคํŠธ์—์„œ ์ฒซ ๋ฒˆ์งธ๋กœ ๋‚˜์˜ค๋Š” ์š”์†Œ x๋ฅผ ์‚ญ์ œํ•œ๋‹ค
    • pop([i]): ์ธ๋ฑ์Šค i์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • clear(): ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค
  3. ์š”์†Œ ์ฐพ๊ธฐ ๋ฐ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ
    • index(x[, start[, end]]): ๋ฆฌ์ŠคํŠธ์—์„œ ์ฒซ ๋ฒˆ์งธ๋กœ ๋‚˜์˜ค๋Š” ์š”์†Œ x์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • count(x): ๋ฆฌ์ŠคํŠธ์—์„œ ์š”์†Œ x์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ผ๋‹ค.
    1
    2
    3
    4
    
     numbers = [1, 2, 3, 2, 4, 2, 5]
     print(numbers.index(2))  # ์ถœ๋ ฅ: 1
     print(numbers.index(2, 2))  # ์ถœ๋ ฅ: 3
     print(numbers.count(2))  # ์ถœ๋ ฅ: 3
    
  4. ๋ฆฌ์ŠคํŠธ ์ •๋ ฌ
    • sort(key=None, reverse=False): ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌ
    • key๋Š” ์ •๋ ฌ ๊ธฐ์ค€์ด ๋˜๋Š” ํ•จ์ˆ˜, reverse๋Š” ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ์ง€์ •
    • reverse(): ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ ์ˆœ์„œ๋ฅผ ๋ฐ˜๋Œ€๋กœ ๋’ค์ง‘๋Š”๋‹ค
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
     numbers = [5, 2, 9, 1, 5, 6]
     numbers.sort()
     print(numbers)  # ์ถœ๋ ฅ: [1, 2, 5, 5, 6, 9]
        
     numbers.sort(reverse=True)
     print(numbers)  # ์ถœ๋ ฅ: [9, 6, 5, 5, 2, 1]
        
     numbers.reverse()
     print(numbers)  # ์ถœ๋ ฅ: [1, 2, 5, 5, 6, 9]
    
  5. ๋ฆฌ์ŠคํŠธ ๋ณต์‚ฌ

    copy(): ๋ฆฌ์ŠคํŠธ์˜ ์–•์€ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ ๋‹ค.

    1
    2
    3
    
     numbers = [1, 2, 3, 4, 5]
     numbers_copy = numbers.copy()
     print(numbers_copy)  # ์ถœ๋ ฅ: [1, 2, 3, 4, 5]
    

๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜ (List Comprehensions)

  • ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์€ ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • ๋ฐ˜๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์„ ํ•œ ์ค„๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ณต์žกํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ํšจ์œจ์„ฑ์„ ๋†’์ธ๋‹ค.
  • ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์€ ๊ธฐ์กด์˜ for ๋ฃจํ”„๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์–ด ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ๊ฐ€๋Šฅ
  1. ๊ธฐ๋ณธ ํ˜•ํƒœ

    1
    
     [expression for item in iterable if condition]
    

    expression: ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์‹คํ–‰ํ•  ํ‘œํ˜„์‹

    item: ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด(์˜ˆ: ๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ, ๋ฌธ์ž์—ด ๋“ฑ)์—์„œ ๊ฐ€์ ธ์˜จ ์š”์†Œ

    iterable: ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด

    condition: ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ, ์ด ์กฐ๊ฑด์ด ์ฐธ์ธ ๊ฒฝ์šฐ์—๋งŒ ์š”์†Œ๊ฐ€ ๋ฆฌ์ŠคํŠธ์— ํฌํ•จ๋œ๋‹ค.

์˜ˆ์ œ

  1. ์˜ˆ์ œ 1

    1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘์—์„œ ์ง์ˆ˜๋งŒ ํฌํ•จ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    1
    2
    
     even_numbers = [x for x in range(1, 11) if x % 2 == 0]
     print(even_numbers)  # ์ถœ๋ ฅ: [2, 4, 6, 8, 10]
    
    • ์—ฌ๊ธฐ์„œ x๋Š” 1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ์ˆซ์ž์ด๋ฉฐ, x % 2 == 0 ์กฐ๊ฑด์€ x๊ฐ€ ์ง์ˆ˜์ธ ๊ฒฝ์šฐ์—๋งŒ ์ฐธ์ด ๋œ๋‹ค.
  2. ์˜ˆ์ œ 2

    1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ์ˆซ์ž์˜ ์ œ๊ณฑ์„ ํฌํ•จํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    1
    2
    
     squares = [x**2 for x in range(1, 11)]
     print(squares)  # ์ถœ๋ ฅ: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100
    
    • ์—ฌ๊ธฐ์„œ x**2๋Š” x์˜ ์ œ๊ณฑ์„ ๊ณ„์‚ฐํ•œ๋‹ค.
    • ๊ฒฐ๊ณผ์ ์œผ๋กœ, [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] ํ˜•ํƒœ์˜ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ๋จ
  3. ์˜ˆ์ œ 3

    ๋‘ ๋ฆฌ์ŠคํŠธ์˜ Cartesian product ์ƒ์„ฑ

    1
    2
    3
    4
    5
    
     colors = ["red", "green", "blue"]
     objects = ["ball", "cube"]
     cartesian_product = [(color, obj) for color in colors for obj in objects]
     print(cartesian_product)
     # ์ถœ๋ ฅ: [('red', 'ball'), ('red', 'cube'), ('green', 'ball'), ('green', 'cube'), ('blue', 'ball'), ('blue', 'cube'
    

    ์—ฌ๊ธฐ์„œ for color in colors์™€ for obj in objects๋Š” ์ค‘์ฒฉ๋œ ๋ฐ˜๋ณต๋ฌธ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

    ๊ฐ ์ƒ‰์ƒ๊ณผ ๊ฐ์ฒด์˜ ์กฐํ•ฉ์„ ํŠœํ”Œ๋กœ ์ƒ์„ฑํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

  4. ๋ฌธ์ž์—ด์˜ ๊ฐ ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜

    ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์˜ ๊ฐ ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑ

    1
    2
    3
    
    text = "hello"
    uppercase_letters = [char.upper() for char in text]
    print(uppercase_letters)  # ์ถœ๋ ฅ: ['H', 'E', 'L', 'L', 'O']
    

  1. ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ ์ค‘ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๋งŒ ์„ ํƒ

    1๋ถ€ํ„ฐ 20๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘์—์„œ 3์˜ ๋ฐฐ์ˆ˜๋งŒ ํฌํ•จ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑ

    1
    2
    
     multiples_of_three = [x for x in range(1, 21) if x % 3 == 0]
     print(multiples_of_three)  # ์ถœ๋ ฅ: [3, 6, 9, 12, 15, 18]
    

    ์—ฌ๊ธฐ์„œ x % 3 == 0 ์กฐ๊ฑด์€ x๊ฐ€ 3์˜ ๋ฐฐ์ˆ˜์ธ ๊ฒฝ์šฐ์—๋งŒ ์ฐธ

  2. ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ณ€ํ™˜

    1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘์—์„œ ์ง์ˆ˜๋Š” ์ œ๊ณฑํ•˜๊ณ , ํ™€์ˆ˜๋Š” ๊ทธ๋Œ€๋กœ ํฌํ•จ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    1
    2
    
     numbers = [x**2 if x % 2 == 0 else x for x in range(1, 11)]
     print(numbers)  # ์ถœ๋ ฅ: [1, 4, 3, 16, 5, 36, 7, 64, 9, 100]
    

    ์—ฌ๊ธฐ์„œ x**2 if x % 2 == 0 else x ํ‘œํ˜„์‹์€ x๊ฐ€ ์ง์ˆ˜์ธ ๊ฒฝ์šฐ ์ œ๊ณฑ์„ ๊ณ„์‚ฐํ•˜๊ณ , ํ™€์ˆ˜์ธ ๊ฒฝ์šฐ ๊ทธ๋Œ€๋กœ x๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  3. ์ค‘์ฒฉ ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜

    2์ฐจ์› ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ํ‰ํƒ„ํ™”(flatten)ํ•˜์—ฌ 1์ฐจ์› ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

    1
    2
    3
    
     matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
     flattened = [num for row in matrix for num in row]
     print(flattened)  # ์ถœ๋ ฅ: [1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    ์—ฌ๊ธฐ์„œ for row in matrix๋Š” 2์ฐจ์› ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ํ–‰์„ ๋ฐ˜๋ณตํ•˜๊ณ , for num in row๋Š” ๊ฐ ํ–‰์˜ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.

๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์˜ ์žฅ์ 

  • ๊ฐ„๊ฒฐ์„ฑ: ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ€๋…์„ฑ: ํ•œ ์ค„๋กœ ์ž‘์„ฑ๋œ ์ปดํ”„๋ฆฌํ—จ์…˜์€ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋ณด๋‹ค ๊ฐ€๋…์„ฑ์ด ๋†’๋‹ค.
  • ์„ฑ๋Šฅ: ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์€ ์ผ๋ฐ˜์ ์ธ for ๋ฃจํ”„๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์ปดํ”„๋ฆฌํ—จ์…˜์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์ตœ์ ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์˜ ์ฃผ์˜์‚ฌํ•ญ
  • ๊ณผ๋„ํ•œ ์‚ฌ์šฉ ์ง€์–‘: ๋„ˆ๋ฌด ๋ณต์žกํ•œ ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์€ ์˜คํžˆ๋ ค ๊ฐ€๋…์„ฑ์„ ๋–จ์–ด๋œจ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • ๋””๋ฒ„๊น… ์–ด๋ ค์›€: ํ•œ ์ค„๋กœ ์ž‘์„ฑ๋œ ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์€ ๋””๋ฒ„๊น…์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ณต์žกํ•œ ๋กœ์ง์€ ์—ฌ๋Ÿฌ ์ค„๋กœ ๋‚˜๋ˆ„์–ด ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

5. ์˜ˆ์ œ ๋ฐ ์‹ค์Šต ๋ฌธ์ œ

  1. ๋ฌธ์ œ 1: ๋ฆฌ์ŠคํŠธ์—์„œ ์ค‘๋ณต๋œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ํ•จ์ˆ˜ ์ž‘์„ฑ

    1
    2
    3
    4
    5
    6
    
     def remove_duplicates(lst):
         return list(set(lst))
        
     numbers = [1, 2, 3, 2, 4, 5, 3, 6]
     unique_numbers = remove_duplicates(numbers)
     print(unique_numbers)  # ์ถœ๋ ฅ: ์ค‘๋ณต์ด ์ œ๊ฑฐ๋œ ๋ฆฌ์ŠคํŠธ
    
  2. ๋ฌธ์ œ 2: ๋ฆฌ์ŠคํŠธ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’๊ณผ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ๋Š” ํ•จ์ˆ˜ ์ž‘์„ฑ

    1
    2
    3
    4
    5
    6
    7
    
     def find_max_min(lst):
         return max(lst), min(lst)
        
     numbers = [1, 2, 3, 4, 5]
     max_value, min_value = find_max_min(numbers)
     print(f"์ตœ๋Œ€๊ฐ’: {max_value}, ์ตœ์†Œ๊ฐ’: {min_value}")  
     # ์ถœ๋ ฅ: ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’
    
  3. ๋ฌธ์ œ 3: ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ œ๊ณฑํ•œ ๊ฐ’์„ ๊ฐ–๋Š” ์ƒˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜ ์ž‘์„ฑ

    1
    2
    3
    4
    5
    6
    7
    8
    
     def square_elements(lst):
         return [x**2 for x in lst]
        
     numbers = [1, 2, 3, 4, 5]
     squared_numbers = square_elements(numbers)
     print(squared_numbers)  
        
     # ์ถœ๋ ฅ: [1, 4, 9, 16, 25]
    

Dictionary

java์˜ Map๊ณผ ๋น„์Šท

  • ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒํ˜•
  • ๋”•์…”๋„ˆ๋ฆฌ๋Š” ์ค‘๊ด„ํ˜ธ {}๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•˜๋ฉฐ, ๊ฐ ํ‚ค์™€ ๊ฐ’์€ ์ฝœ๋ก  :์œผ๋กœ ๊ตฌ๋ถ„๋˜๊ณ , ์Œ์€ ์‰ผํ‘œ ,๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.
  • ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค๋Š” ๋ถˆ๋ณ€(immutable) ์ž๋ฃŒํ˜•์ด์–ด์•ผ ํ•˜๋ฉฐ, ๊ฐ’์€ ์–ด๋–ค ์ž๋ฃŒํ˜•๋„ ๊ฐ€๋Šฅ
  • ๋”•์…”๋„ˆ๋ฆฌ๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋˜๋ฏ€๋กœ, ํ‚ค๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”•์…”๋„ˆ๋ฆฌ ์ƒ์„ฑ

1
2
3
4
5
6
7
8
9
10
11
12
13
# ๋นˆ ๋”•์…”๋„ˆ๋ฆฌ ์ƒ์„ฑ
empty_dict = {}

# ํ‚ค-๊ฐ’ ์Œ์„ ํฌํ•จํ•œ ๋”•์…”๋„ˆ๋ฆฌ ์ƒ์„ฑ
person = {
    "name": "ํ™๊ธธ๋™",
    "age": 27,
    "city": "์„œ์šธ"
}

# dict() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋”•์…”๋„ˆ๋ฆฌ ์ƒ์„ฑ
person = dict(name="ํ™๊ธธ๋™", age=27, city="์„œ์šธ")

๋”•์…”๋„ˆ๋ฆฌ ์ ‘๊ทผ ๋ฐ ์ˆ˜์ •

ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผํ•˜๊ณ  ์ˆ˜์ •๊ฐ€๋Šฅ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
person = {"name": "ํ™๊ธธ๋™", "age": 27, "city": "์„œ์šธ"}

# ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ’ ์ ‘๊ทผ
print(person["name"])  # ์ถœ๋ ฅ: ํ™๊ธธ๋™
print(person["age"])  # ์ถœ๋ ฅ: 27

# ๊ฐ’ ์ˆ˜์ •
person["age"] = 28
print(person)  # ์ถœ๋ ฅ: {'name': 'ํ™๊ธธ๋™', 'age': 28, 'city': '์„œ์šธ'}

# ์ƒˆ ํ‚ค-๊ฐ’ ์Œ ์ถ”๊ฐ€
person["job"] = "๊ฐœ๋ฐœ์ž"
print(person)  # ์ถœ๋ ฅ: {'name': 'ํ™๊ธธ๋™', 'age': 28, 'city': '์„œ์šธ', 'job': '๊ฐœ๋ฐœ์ž'}

๋”•์…”๋„ˆ๋ฆฌ ๋ฉ”์„œ๋“œ

  1. ์š”์†Œ ์ถ”๊ฐ€ ๋ฐ ์—…๋ฐ์ดํŠธ
    • update() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค-๊ฐ’ ์Œ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.
    1
    2
    3
    
     person = {"name": "ํ™๊ธธ๋™", "age": 27}
     person.update({"city": "์„œ์šธ", "job": "๊ฐœ๋ฐœ์ž"})
     print(person)  # ์ถœ๋ ฅ: {'name': 'ํ™๊ธธ๋™', 'age': 27, 'city': '์„œ์šธ', 'job': '๊ฐœ๋ฐœ์ž'}
    
  2. ์š”์†Œ ์‚ญ์ œ
    • del ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ pop() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.
    • popitem() ๋ฉ”์„œ๋“œ๋Š” ๋งˆ์ง€๋ง‰ ํ‚ค-๊ฐ’ ์Œ์„ ์‚ญ์ œํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค..
    • clear() ๋ฉ”์„œ๋“œ๋Š” ๋”•์…”๋„ˆ๋ฆฌ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
  3. ์š”์†Œ ๊ฒ€์ƒ‰
    • keys(), values(), items() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค, ๊ฐ’, ํ‚ค-๊ฐ’ ์Œ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์š”์†Œ ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ

    1
    2
    3
    4
    5
    6
    
        
     person = {"name": "ํ™๊ธธ๋™", "age": 27, "city": "์„œ์šธ"}
        
     # ํ‚ค ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ
     print("name" in person)  # ์ถœ๋ ฅ: True
     print("job" in person)   # ์ถœ๋ ฅ: False
    

๋”•์…”๋„ˆ๋ฆฌ ์ปดํ”„๋ฆฌํ—จ์…˜(Dictionary Comprehensions)

  • ๊ธฐ์กด์˜ ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜๊ณผ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ง๊ด€์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•œ ์ค„์˜ ์ฝ”๋“œ๋กœ ๋ณต์žกํ•œ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ํšจ์œจ์„ฑ์„ ๋†’์ธ๋‹ค.
    1. ๊ธฐ๋ณธ ํ˜•ํƒœ
    1
    
      {ํ‚ค_ํ‘œํ˜„์‹: ๊ฐ’_ํ‘œํ˜„์‹ for ์•„์ดํ…œ in ๋ฐ˜๋ณต๊ฐ€๋Šฅ๊ฐ์ฒด if ์กฐ๊ฑด}
    
    • ํ‚ค_ํ‘œํ˜„์‹: ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ‘œํ˜„์‹
    • ๊ฐ’_ํ‘œํ˜„์‹: ๋”•์…”๋„ˆ๋ฆฌ์˜ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ํ‘œํ˜„์‹
    • ์•„์ดํ…œ: ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด(์˜ˆ: ๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ, ๋ฌธ์ž์—ด ๋“ฑ)์—์„œ ๊ฐ€์ ธ์˜จ ์š”์†Œ
    • ์กฐ๊ฑด: ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ, ์ด ์กฐ๊ฑด์ด ์ฐธ์ธ ๊ฒฝ์šฐ์—๋งŒ ์•„์ดํ…œ์ด ๋”•์…”๋„ˆ๋ฆฌ์— ํฌํ•จ๋œ๋‹ค.
      1. ์˜ˆ์ œ
    1
    2
    3
    4
    
      text = "hello world"
      frequency = {char: text.count(char) for char in set(text)}
      print(frequency)  
      # ์ถœ๋ ฅ: {'d': 1, 'h': 1, 'e': 1, 'o': 2, 'l': 3, 'r': 1, ' ': 1, 'w': 1}
    
    • set(text)๋Š” ๋ฌธ์ž์—ด text์—์„œ ์ค‘๋ณต๋œ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ์œ ์ผํ•œ ๋ฌธ์ž๋งŒ์„ ํฌํ•จํ•˜๋Š” ์ง‘ํ•ฉ์„ ๋งŒ๋“ ๋‹ค.
    • text.count(char)๋Š” ๋ฌธ์ž์—ด text์—์„œ ๋ฌธ์ž char์˜ ๋นˆ๋„์ˆ˜๋ฅผ ๊ณ„์‚ฐ
    • ๊ฒฐ๊ณผ์ ์œผ๋กœ, ๊ฐ ๋ฌธ์ž์˜ ๋นˆ๋„์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋”•์…”๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

python ์นดํ…Œ๊ณ ๋ฆฌ ๋‚ด ๋‹ค๋ฅธ ๊ธ€ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

Leave a comment