[Python] μ‹œν€€μŠ€ μžλ£Œν˜•(리슀트, νŠœν”Œ, range, λ¬Έμžμ—΄)

2025. 3. 19. 23:56Β·Language/Python

 

λ³Έ ν¬μŠ€νŒ…μ€ 학ꡐ μˆ˜μ—…μ—μ„œ 닀룬 파이썬 문법 뢀뢄을 μ •λ¦¬ν•΄λ‘κ³ μž λ‚¨κΈ°λŠ” ν¬μŠ€νŒ…μ΄λ‹€.

(ν•΄λ‹Ή μˆ˜μ—…μ€ '파이썬 도μž₯'κ³Ό '점프 투 파이썬'을 ꡐ재둜 문법 μˆ˜μ—…μ„ μ§„ν–‰)

μ‹œν€€μŠ€

μ‹œν€€μŠ€ μžλ£Œν˜•

  • 리슀트, νŠœν”Œ, range, λ¬Έμžμ—΄κ³Ό 같이 μ—°μ†μ μœΌλ‘œ 값이 이어진 μžλ£Œν˜•μ„ μ‹œν€€μŠ€ μžλ£Œν˜•(sequence type)라고 ν•œλ‹€.
  • 주둜 μ‚¬μš©ν•˜λŠ” μžλ£Œν˜•μ€ list, tuple, range, str을 주둜 μ‚¬μš©
    • bytes, bytearray 도 있음
  • μ‹œν€€μŠ€ μžλ£Œν˜•μ€ 곡톡 λ™μž‘κ³Ό κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€
  • μ‹œν€€μŠ€ 객체 : μ‹œν€€μŠ€ μžλ£Œν˜•μœΌλ‘œ λ§Œλ“  객체
  • μš”μ†Œ : μ‹œν€€μŠ€ 객체에 λ“€μ–΄κ°€λŠ” 각 κ°’

νŠΉμ •κ°’μ΄ μžˆλŠ”μ§€ ν™•μΈν•˜κΈ°

  • μ‹œν€€μŠ€ μžλ£Œν˜•(리슀트, νŠœν”Œ, range, λ¬Έμžμ—΄)μ—μ„œ inκ³Ό not in μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΉμ • κ°’μ˜ 쑴재 μ—¬λΆ€λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
# 1. λ¦¬μŠ€νŠΈμ—μ„œ in, not in μ‚¬μš©
fruits = ['사과', 'λ°”λ‚˜λ‚˜', 'μ˜€λ Œμ§€', '포도']
print('사과' in fruits)      # True
print('ν‚€μœ„' not in fruits)  # True

# 2. νŠœν”Œμ—μ„œ in, not in μ‚¬μš©
numbers = (1, 2, 3, 4, 5)
print(3 in numbers)        # True
print(6 not in numbers)    # True

# 3. rangeμ—μ„œ in, not in μ‚¬μš©
r = range(1, 10, 2)  # 1, 3, 5, 7, 9
print(5 in r)         # True
print(4 in r)         # False
print(2 not in r)     # True

# 4. λ¬Έμžμ—΄μ—μ„œ in, not in μ‚¬μš©
text = "Hello, Python!"
print('Python' in text)     # True
print('Java' not in text)   # True

# 5. μ‹€μ œ ν™œμš© μ˜ˆμ‹œ
def check_fruit(fruit_name):
    fruits = ['사과', 'λ°”λ‚˜λ‚˜', 'μ˜€λ Œμ§€', '포도']
    if fruit_name in fruits:
        return f"{fruit_name}은(λŠ”) 과일 λͺ©λ‘μ— μžˆμŠ΅λ‹ˆλ‹€."
    else:
        return f"{fruit_name}은(λŠ”) 과일 λͺ©λ‘μ— μ—†μŠ΅λ‹ˆλ‹€."

def is_odd_number(num):
    odd_numbers = range(1, 101, 2)  # 1λΆ€ν„° 100κΉŒμ§€μ˜ ν™€μˆ˜
    return num in odd_numbers

# μ‹€ν–‰ κ²°κ³Ό
print(check_fruit('사과'))   # 사과은(λŠ”) 과일 λͺ©λ‘μ— μžˆμŠ΅λ‹ˆλ‹€.
print(check_fruit('ν‚€μœ„'))   # ν‚€μœ„μ€(λŠ”) 과일 λͺ©λ‘μ— μ—†μŠ΅λ‹ˆλ‹€.
print(is_odd_number(27))    # True
print(is_odd_number(50))    # False

# 6. μ—¬λŸ¬ κ°’ λ™μ‹œμ— ν™•μΈν•˜κΈ°
numbers = (1, 2, 3, 4, 5)
print(all(x in numbers for x in [1, 2, 3]))  # True (λͺ¨λ“  값이 μžˆλŠ”μ§€)
print(any(x in numbers for x in [1, 6, 7]))  # True (ν•˜λ‚˜λΌλ„ μžˆλŠ”μ§€)

μ£Όμš” νŠΉμ§•:

  1. in: μ‹œν€€μŠ€ 내에 값이 있으면 True λ°˜ν™˜
  2. not in: μ‹œν€€μŠ€ 내에 값이 μ—†μœΌλ©΄ True λ°˜ν™˜
  3. λͺ¨λ“  μ‹œν€€μŠ€ μžλ£Œν˜•(list, tuple, range, str)μ—μ„œ μ‚¬μš© κ°€λŠ₯
  4. λŒ€μ†Œλ¬Έμžλ₯Ό ꡬ뢄함 (λ¬Έμžμ—΄μ˜ 경우)
  5. all()κ³Ό any()λ₯Ό ν™œμš©ν•˜μ—¬ μ—¬λŸ¬ 값을 ν•œ λ²ˆμ— 확인 κ°€λŠ₯

μ‹œν€€μŠ€ 객체 μ—°κ²°, 반볡

# 리슀트 μ—°κ²°
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = list1 + list2
print(combined_list)  # [1, 2, 3, 4, 5, 6]

# 리슀트 반볡
repeated_list = list1 * 3
print(repeated_list)  # [1, 2, 3, 1, 2, 3, 1, 2, 3]

# rangeλŠ” + μ—°μ‚°μž λΆˆκ°€λŠ₯
r1 = range(1, 4)
r2 = range(4, 7)
# combined_range = r1 + r2  # TypeError λ°œμƒ

# rangeλ₯Ό 리슀트둜 λ³€ν™˜ν•˜μ—¬ μ—°κ²°
combined_range_list = list(r1) + list(r2)
print(combined_range_list)  # [1, 2, 3, 4, 5, 6]

# rangeλ₯Ό νŠœν”Œλ‘œ λ³€ν™˜ν•˜μ—¬ μ—°κ²°
combined_range_tuple = tuple(r1) + tuple(r2)
print(combined_range_tuple)  # (1, 2, 3, 4, 5, 6)

# λ¬Έμžμ—΄ μ—°κ²°
str1 = "Hello, "
str2 = "World!"
combined_str = str1 + str2
print(combined_str)  # "Hello, World!"

μ£Όμš” νŠΉμ§•:

  1. λ¦¬μŠ€νŠΈμ™€ λ¬Έμžμ—΄μ€ + μ—°μ‚°μžλ‘œ μ—°κ²° κ°€λŠ₯
  2. λ¦¬μŠ€νŠΈλŠ” * μ—°μ‚°μžλ‘œ 반볡 κ°€λŠ₯
  3. rangeλŠ” 직접 μ—°κ²° λΆˆκ°€, λ¦¬μŠ€νŠΈλ‚˜ νŠœν”Œλ‘œ λ³€ν™˜ ν›„ μ—°κ²° κ°€λŠ₯
  4. λ¬Έμžμ—΄μ€ + μ—°μ‚°μžλ‘œ μ—°κ²° κ°€λŠ₯ν•˜λ©°, λ°˜λ³΅μ€ * μ—°μ‚°μžλ‘œ κ°€λŠ₯

μ‹œν€€μŠ€ 객체의 μš”μ†Œ 개수 κ΅¬ν•˜κΈ°

# 리슀트의 μš”μ†Œ 개수 κ΅¬ν•˜κΈ°
fruits = ['사과', 'λ°”λ‚˜λ‚˜', 'μ˜€λ Œμ§€', '포도']
print(len(fruits))  # 4

# νŠœν”Œμ˜ μš”μ†Œ 개수 κ΅¬ν•˜κΈ°
numbers = (1, 2, 3, 4, 5)
print(len(numbers))  # 5

# λ¬Έμžμ—΄μ˜ 길이 κ΅¬ν•˜κΈ°
text = "Hello, Python!"
print(len(text))  # 14

μ£Όμš” νŠΉμ§•:

  1. len() ν•¨μˆ˜λŠ” μ‹œν€€μŠ€ 객체의 μš”μ†Œ 개수λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
  2. 리슀트, νŠœν”Œ, λ¬Έμžμ—΄ λ“± λͺ¨λ“  μ‹œν€€μŠ€ μžλ£Œν˜•μ— μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€.
  3. μ‹€λ¬΄μ—μ„œλŠ” range등을 μ‚¬μš©ν•˜μ—¬ 리슀트(νŠœν”Œ)을 μƒμ„±ν•˜κ±°λ‚˜ λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ μš”μ†Œλ₯Ό μΆ”κ°€,μ‚­μ œ ν•˜κΈ° λ•Œλ¬Έμ— len()λ₯Ό 자주 μ‚¬μš©

인덱슀 μ‚¬μš©

  • μ‹œν€€μŠ€ 객체의 각 μš”μ†ŒλŠ” μˆœμ„œκ°€ μ •ν•΄μ Έμžˆκ³  이 μˆœμ„œλ₯Ό 인덱슀라고 λΆ€λ₯Έλ‹€
  • μ‹œν€€μŠ€ 객체에 [](λŒ€κ΄„ν˜Έ)λ₯Ό 뢙이고 μ•ˆμ— 각 μš”μ†Œμ˜ 인덱슀λ₯Ό μ§€μ •ν•˜λ©΄ ν•΄λ‹Ή μš”μ†Œμ— μ ‘κ·Ό κ°€λŠ₯
    fruits = ['사과', 'λ°”λ‚˜λ‚˜', 'μ˜€λ Œμ§€']
    print(fruits[0])  # 사과
    print(fruits[-1])  # μ˜€λ Œμ§€
  • μ‹œν€€μŠ€ 객체의 μΈλ±μŠ€λŠ” 항상 0λΆ€ν„° μ‹œμž‘
  • νŠœν”Œ, λ¬Έμžμ—΄, range도 인덱슀둜 μ ‘κ·Ό κ°€λŠ₯
  • νŒŒμ΄μ¬μ—λŠ” λ‹€λ₯Έ μ–Έμ–΄μ™€λŠ” 달리 음수 인덱슀 지정도 κ°€λŠ₯ν•˜λ‹€
    • μ‹œν€€μŠ€ 객체에 인덱슀λ₯Ό 음수둜 μ§€μ •ν•˜λ©΄ λ’€μ—μ„œλΆ€ν„° μš”μ†Œμ— μ ‘κ·Ό
    • 즉 -1은 λ’€μ—μ„œ 첫 번째, -5λŠ” λ’€μ—μ„œ λ‹€μ„― 번째 μš”μ†Œ
      fruits = ['사과', 'λ°”λ‚˜λ‚˜', 'μ˜€λ Œμ§€']
      print(fruits[-1])  # μ˜€λ Œμ§€
      print(fruits[-2])  # λ°”λ‚˜λ‚˜
  • λ§ˆμ°¬κ°€μ§€λ‘œ νŠœν”Œ,λ¬Έμžμ—΄,rangeλͺ¨λ‘ κ°€λŠ₯

인덱슀 λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜λ©΄?

  • 인덱슀 λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜λ©΄ IndexErrorλ°œμƒ
  • λ§ˆμ§€λ§‰ μš”μ†Œμ— μ ‘κ·Όν•˜λ €λ©΄ -1둜 μ ‘κ·Ό
  • len ν•¨μˆ˜λ‘œ 리슀트의 길이λ₯Ό κ΅¬ν•œ λ’€ 길이-1λ₯Ό 인덱슀둜 μ§€μ •
    fruits = ['사과', 'λ°”λ‚˜λ‚˜', 'μ˜€λ Œμ§€']
    # print(fruits[3])  # IndexError λ°œμƒ
    μš”μ†Œμ— κ°’ ν• λ‹Ή
  • []둜 μ‹œν€€μŠ€ 객체의 μš”μ†Œμ— μ ‘κ·Όν•œ λ’€ =둜 값을 ν• λ‹Ή
  • 변경은 리슀트만 κ°€λŠ₯ν•˜κ³ , νŠœν”Œ, λ¬Έμžμ—΄, rangeλŠ” 변경이 λΆˆκ°€λŠ₯ν•˜λ‹€.
    fruits = ['사과', 'λ°”λ‚˜λ‚˜', 'μ˜€λ Œμ§€']
    fruits[1] = 'ν‚€μœ„'
    print(fruits)  # ['사과', 'ν‚€μœ„', 'μ˜€λ Œμ§€']
    μš”μ†Œ μ‚­μ œ
  • del을 톑해 μ‚­μ œν•  μš”μ†Œ μ§€μ •
    • del μ‹œν€€μŠ€κ°μ²΄[인덱슀]
  • μ΄κ²½μš°μ—λ„ 리슀트만 μ‚­μ œκ°€ κ°€λŠ₯ν•˜κ³  λ‹€λ₯Έ μžλ£Œν˜•μ€ λΆˆκ°€λŠ₯

슬라이슀

  • μ‹œν€€μŠ€ κ°μ²΄λŠ” 슬라이슀λ₯Ό 톡해 일뢀 μ •λ³΄λ§Œ μž˜λΌλ‚Ό 수 μžˆλ‹€.
    • μ‹œν€€μŠ€κ°μ²΄[μ‹œμž‘μΈλ±μŠ€:끝인덱슀]
  • ⭐️ 원본은 λ°”λ€Œμ§€ μ•Šκ³ , ν•„μš”ν•œ 뢀뢄을 μž˜λΌλ‚΄μ–΄ μƒˆλ‘œμš΄ 리슀트λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.
    a[0:10] #인덱슀 0λΆ€ν„° 9κΉŒμ§€ μž˜λΌμ„œ μƒˆ 리슀트 λ§Œλ“¦
  • 슬라이슀 ν–ˆμ„ λ•Œ μ‹€μ œλ‘œ κ°€μ Έμ˜€λŠ” μš”μ†ŒλŠ” μΈλ±μŠ€λΆ€ν„° 끝인덱슀 -1κΉŒμ§€μž„
    • a[1:1]처럼 μ‹œμž‘ μΈλ±μŠ€μ™€ 끝 인덱슀λ₯Ό 같은 숫자둜 μ§€μ •ν•˜λ©΄ 아무것도 κ°€μ Έμ˜€μ§€ μ•ŠμŒ
    • a[1:2]처럼 1을 더 크게 μ§€μ •ν•΄μ•Ό μš”μ†Œ ν•˜λ‚˜λ₯Ό κ°€μ Έμ˜¨λ‹€
  • 리슀트 쀑간 λΆ€λΆ„ κ°€μ Έμ˜€κΈ°
    a=[0,10,20,30,40,50,60,70,80,90]
    >>> a[4:7] #인덱슀 4λΆ€ν„° 6κΉŒμ§€ μš”μ†Œ 3개 κ°€μ Έμ˜΄
    [40,50,60]
  • 이 λ•Œ 음수 인덱슀λ₯Ό μ‚¬μš©ν•΄μ„œ 쀑간뢀터 λκΉŒμ§€λ₯Ό μ§€μ •ν•  μˆ˜λ„ 있음
  • 인덱슀 증가폭을 μ§€μ •ν•˜μ—¬ λ²”μœ„ λ‚΄μ—μ„œ 인덱슀λ₯Ό κ±΄λ„ˆλ›°μ–΄κ°€λ©° μš”μ†Œλ₯Ό κ°€μ Έμ˜¬ μˆ˜λ„ μžˆλ‹€
    a=[0,10,20,30,40,50,60,70,80,90]
    >>> a[2:8:3] # 인덱슀 2λΆ€ν„° 3μ”© μ¦κ°€μ‹œν‚€λ©΄μ„œ 인덱슀 7κΉŒμ§€ κ°€μ Έμ˜΄
    [20, 50]
    (사진 자료 μΆ”κ°€)

인덱슀 μƒλž΅λ„ κ°€λŠ₯

  • μ²˜μŒμ„ μƒλž΅ν•˜μ—¬ 리슀트의 μ²˜μŒλΆ€ν„° 7인덱슀 -1κΉŒμ§€λ‘œ
    • a[:7]
  • 끝을 μƒλž΅ν•˜μ—¬ μ§€μ • μΈλ±μŠ€λΆ€ν„° λκΉŒμ§€
    • a[7:]
  • λ‘˜ λ‹€ μƒλž΅ν•˜λ©΄ 전체 리슀트λ₯Ό κ°€μ Έμ˜΄
    • a[:]
  • μƒλž΅κ³Ό 증가폭을 ν•¨κ»˜ μ‚¬μš©
    • 처음 인덱슀λ₯Ό μƒλž΅ν•˜μ—¬ 인덱슀 증가폭을 μ§€μ •ν•˜κ³  리슀트의 μ²˜μŒλΆ€ν„° 인덱슀λ₯Ό μ¦κ°€μ‹œν‚€λ©΄μ„œ 끝 인덱슀 -1κΉŒμ§€ μš”μ†Œλ₯Ό κ°€μ Έμ˜€κΈ°
      • a[:7:2]
    • 끝 인덱슀λ₯Ό μƒλž΅ν•˜μ—¬ 인덱슀 증가폭을 μ§€μ •ν•˜κ³  리슀트의 처음 μΈλ±μŠ€λΆ€ν„° λ§ˆμ§€λ§‰ μš”μ†ŒκΉŒμ§€ κ°€μ Έμ˜΄
      • a[7::2]
    • 처음 끝을 λ‘˜λ‹€ μƒλž΅ν•˜κ³  μ¦κ°€ν­λ§Œ μ§€μ •
      • a[::2]
    • μ „λΆ€ μƒλž΅μ‹œ λͺ¨λ‘ κ°€μ Έμ˜΄
      • a[::]
  • len을 μ‘μš©ν•˜μ—¬ 전체λ₯Ό κ°€μ Έμ˜€κΈ°
    • a[0:len(a)]
    • λ§ˆμ°¬κ°€μ§€λ‘œ μƒλž΅κ³Ό ν•¨κ»˜ ν™œμš© κ°€λŠ₯
  • μŠ¬λΌμ΄μŠ€λŠ” νŠœν”Œ, range, λ¬Έμžμ—΄μ—λ„ 적용 κ°€λŠ₯
    • range에 슬라이슀 μ‚¬μš©ν•˜λ©΄ range객체λ₯Ό μƒˆλ‘œ λ§Œλ“¦(ν•¨μˆ˜ν˜•νƒœ)
      r = range(10)
      >>> r
      range(0,10)
      >>> r[4:7]
      range(4,7)
      >>> r[4:]
      range(4, 10)
      슬라이슀 μš”μ†Œ ν• λ‹Ή
  • 슬라이슀둜 λ²”μœ„λ₯Ό μ§€μ •ν•˜μ—¬ μ—¬λŸ¬ μš”μ†Œμ— 값을 ν• λ‹Ή κ°€λŠ₯
    • μ‹œν€€μŠ€κ°μ²΄[μ‹œμž‘μΈλ±μŠ€:끝인덱슀] = μ‹œν€€μŠ€κ°μ²΄
      a = [0, 1, 2, 3, 4, 5]
      a[1:4] = [10, 20, 30]
      print(a)  # [0, 10, 20, 30, 4, 5]
  • λ²”μœ„λ₯Ό μ§€μ •ν•΄μ„œ μš”μ†Œλ₯Ό ν• λ‹Ήν–ˆμ„ 경우 μ›λž˜ 있던 λ¦¬μŠ€νŠΈκ°€ λ³€κ²½λ˜λ©° μƒˆ λ¦¬μŠ€νŠΈλŠ” μƒμ„±λ˜μ§€ μ•ŠμŒ
  • 슬라이슀의 λ²”μœ„μ™€ ν• λ‹Ήν•  리슀트의 μš”μ†Œ 개수λ₯Ό μ •ν™•νžˆ λ§žμΆ”μ§€ μ•Šμ•„λ„ μ•Œμ•„μ„œ ν• λ‹Ήλœλ‹€
    • ν• λ‹Ήν•  μš”μ†Œ κ°œμˆ˜κ°€ 적으면 그만큼 리슀트의 μš”μ†Œ κ°œμˆ˜λ„ 쀄어듦
    • λ°˜λŒ€λ‘œ, ν• λ‹Ήν•  μš”μ†Œ κ°œμˆ˜κ°€ 더 많으면 리슀트 μš”μ†Œ κ°œμˆ˜λ„ 그만큼 λŠ˜μ–΄λ‚œλ‹€
      # ν• λ‹Ήν•  μš”μ†Œ κ°œμˆ˜κ°€ 적은 경우
      a = [0, 1, 2, 3, 4, 5]
      a[1:4] = [10] # κ°’ 1,2,3이 사라지고 κ·Έ μžλ¦¬μ— 10이 듀어감
      print(a)  # [0, 10, 4, 5]
      

ν• λ‹Ήν•  μš”μ†Œ κ°œμˆ˜κ°€ 더 λ§Žμ€ 경우

a = [0, 1, 2, 3, 4, 5]
a[1:4] = [10, 20, 30, 40] # 1,2,3이 사라지고 10~40 값이 듀어감
print(a) # [0, 10, 20, 30, 40, 4, 5]

- 인덱슀 증가폭 μ§€μ •κ³Ό ν•¨κ»˜ ν™œμš©ν•˜μ—¬, κ±΄λ„ˆλ›°λ©΄μ„œ κ°’ 할당도 κ°€λŠ₯
```python
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a[2:8:2] = ['a', 'b', 'c'] # 인덱슀 2λΆ€ν„° 2μ”© μ¦κ°€μ‹œν‚€λ©΄μ„œ 인덱슀 7κΉŒμ§€ κ°’ ν• λ‹Ή
>>> a #[0, 1, 'a', 3, 'b', 5, 'c', 70, 80, 90]
  • 증가폭을 μ§€μ •ν–ˆμ„ λ•ŒλŠ” 슬라이슀 λ²”μœ„μ˜ μš”μ†Œ κ°œμˆ˜μ™€ ν• λ‹Ήν•  μš”μ†Œ κ°œμˆ˜κ°€ μ •ν™•νžˆ μΌμΉ˜ν•΄μ•Όν•œλ‹€. μΌμΉ˜ν•˜μ§€ μ•Šμ„ 경우 Value Error λ°œμƒ
  • 리슀트 외에 νŠœν”Œ, range, λ¬Έμžμ—΄μ€ 슬라이슀둜 λ²”μœ„μ§€μ • 해도 μš”μ†Œ 할당은 λͺ»ν•¨

del둜 슬라이슀 μ‚­μ œ

  • 슬라이슀 μ‚­μ œλŠ” del뒀에 μ‚­μ œν•  λ²”μœ„λ₯Ό μ§€μ • κ°€λŠ₯
    • del μ‹œν€€μŠ€κ°μ²΄[μ‹œμž‘μΈλ±μŠ€:끝인덱슀]
      a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      del a[2:5]
      print(a)  # [0, 1, 5, 6, 7, 8, 9]
  • del둜 μš”μ†Œ μ‚­μ œμ‹œ μ›λž˜ 있던 λ¦¬μŠ€νŠΈκ°€ λ³€κ²½λ˜λ©° μƒˆ λ¦¬μŠ€νŠΈλŠ” μƒμ„±λ˜μ§€ μ•ŠλŠ”λ‹€
  • 증가폭 μ§€μ •ν•΄μ„œ del κ°€λŠ₯
    a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    del a[2:8:2] #인덱슀 2λΆ€ν„° 2μ”© μ¦κ°€μ‹œν‚€λ©΄μ„œ 인덱슀 6κΉŒμ§€ μ‚­μ œ
    print(a)  # [0, 1, 3, 5, 7, 8, 9]
  • νŠœν”Œ, range, λ¬Έμžμ—΄μ€ del둜 μ‚­μ œ λΆˆκ°€

 

문제 풀이에 μš©μ΄ν•œ 문법

이둠 κ°•μ˜μ—μ„œ 닀룬 문법은 μ•„λ‹ˆμ§€λ§Œ μ‹€μŠ΅ μ‹œκ°„μ— νŒŒμ΄μ¬μ„ μ›λž˜ ν•™μŠ΅ν–ˆλ˜ ν•™μš°λ“€μ΄ λ¬Έμ œν’€μ΄ λ°œν‘œν•  λ•Œ μ‚¬μš©ν•˜λŠ” 문법듀을 보고 μœ μš©ν•˜λ‹€κ³  νŒλ‹¨ν•˜μ—¬ λ”°λ‘œ μ°Ύμ•„λ³΄μ•˜λ‹€.

리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜

νŒŒμ΄μ¬μ—μ„œ λ¦¬μŠ€νŠΈλŠ” 리슀트 μ•ˆμ— forλ¬Έκ³Ό if문을 μ‚¬μš©ν•  수 μžˆλ‹€λŠ” 특이점이 μžˆλ‹€.

이λ₯Ό 리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜μ΄λΌκ³  ν•œλ‹€.

'μ‹μœΌλ‘œ μ§€μ •ν•΄μ„œ μƒμ„±λœ 것을 리슀트둜 μž‘μ•„λ‘”λ‹€' λŠ” 뜻으둜 μ΄ν•΄ν•˜λ©΄ 될 것 κ°™λ‹€.

리슀트λ₯Ό λ§Œλ“œλŠ” 방법은 λ‹€μ–‘ν•œλ°, 리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜μ„ μ‚¬μš©ν•˜λ©΄ μ—¬λŸ¬ μ€„λ‘œ 생성할 리슀트 μ½”λ“œλ₯Ό ν•œμ€„λ‘œ 쀄일 수 μžˆλ‹€.

 

문법은 [식 for λ³€μˆ˜ in 리슀트] ν˜Ήμ€ list(식 for λ³€μˆ˜ in 리슀트) 의 ν˜•νƒœλ‘œ μ‚¬μš©λœλ‹€. 

>>> a = [i for i in range(10)]        # 0λΆ€ν„° 9κΉŒμ§€ 숫자λ₯Ό μƒμ„±ν•˜μ—¬ 리슀트 생성
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = list(i for i in range(10))    # 0λΆ€ν„° 9κΉŒμ§€ 숫자λ₯Ό μƒμ„±ν•˜μ—¬ 리슀트 생성
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

리슀트 ν‘œν˜„μ‹μ˜ λ™μž‘ μˆœμ„œ

 

forλ¬Έκ³Ό ν•¨κ»˜  if문을 μ‚¬μš©ν•˜κ±°λ‚˜, ν•œλ²ˆμ—  λ‘κ°œ μ΄μƒμ˜ for문을 μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€.

[식 for  λ³€μˆ˜1 in 리슀트1 if 쑰건식1  for λ³€μˆ˜2 in 리슀트2 if 쑰건식 2 ... ]

unpacking

리슀트의 λͺ¨λ“  μš”μ†Œλ₯Ό κΊΌλ‚΄μ„œ 좜λ ₯ν•΄μ•Ό ν•  λ•Œ 항상 for문을 μ‚¬μš©ν–ˆμ—ˆλŠ”λ°, 

파이썬의 unpacking 문법을 μ“°λ©΄ ν•œμ€„λ‘œ μ²˜λ¦¬κ°€ κ°€λŠ₯ν•˜λ‹€κ³  ν•œλ‹€. 

a = [1,2,3] # 123 을 μ΄μ–΄μ„œ 좜λ ₯ν•˜κ³  싢을 λ•Œ
for i in range(0,len(a)):
	print(i, sep="", end="") # 123
    

print(*a, sep="") # 123, 같은 좜λ ₯

 

unpacking은 *을 μ•žμ— λΆ™μ—¬μ£Όλ©΄, μ—¬λŸ¬κ°œμ˜ 객체λ₯Ό ν¬ν•¨ν•˜κ³  μžˆλŠ” ν•˜λ‚˜μ˜ 객체λ₯Ό ν’€μ–΄μ£ΌλŠ” 문법인데

νŒŒμ΄μ¬μ—μ„œλŠ” λ¦¬μŠ€νŠΈλ„ 객체둜 취급을 ν•˜κΈ° λ•Œλ¬Έμ— μ΄λ ‡κ²Œλ„ ν™œμš©μ΄ κ°€λŠ₯ν•œ λ“― ν•˜λ‹€.

 

 

 

f-string

λ¬Έμžμ—΄μ—μ„œ  νŠΉμ • λΆ€λΆ„λ§Œ λ°”κΎΈκ³  λ‚˜λ¨Έμ§€ 뢀뢄은 μΌμ •ν•˜λ‹€κ³  ν•  λ•Œ, λ¬Έμžμ—΄ ν¬λ§·νŒ…μ„ μ‚¬μš©ν•˜λ©΄  μ†μ‰½κ²Œ 좜λ ₯이 κ°€λŠ₯ν•˜λ‹€.

μ‚¬μš©ν•˜λŠ” 방법은 javascript의 ν…œν”Œλ¦Ώ 문법과 μœ μ‚¬ν•˜λ‹€.

print("2025λ…„ 1μ›”")
print("2025λ…„ 2μ›”")
print("2025λ…„ 3μ›”")
...
print("2025λ…„ 12μ›”")




month  = 1
while  month <= 12;
	print(f"2025λ…„ {month}μ›”")
    month  = month  + 1

μœ„μ˜ printλ₯Ό μ—¬λŸ¬μ€„ μ‚¬μš©ν•œ μ½”λ“œμ™€ μ•„λž˜  while문의 좜λ ₯ λ‚΄μš©μ€ κ°™λ‹€.

파이썬 3.6버전뢀터 μ‚¬μš©μ΄ κ°€λŠ₯ν•œ κΈ°λŠ₯이며, f와 {}만 μ‚¬μš©ν•˜λ©΄ λ˜μ–΄ κ°„λ‹¨ν•˜λ‹€.

λ¬Έμžμ—΄μ˜ 맨 μ•žμ— fλ₯Ό λΆ™μ—¬μ£Όκ³ , μ€‘κ΄„ν˜Έ μ•ˆμ— 직접 λ³€μˆ˜λ‚˜ 좜λ ₯ν•˜κ³  싢은 것을 λ„£μ–΄μ€€λ‹€.

 

μ΄λ•Œ, μ€‘κ΄„ν˜Έμ— 콜둠(:)을  μ‚¬μš©ν•˜λ©΄ μ •λ ¬ν•˜λŠ” κΈ°λŠ₯도 μžˆλ‹€.

s1='left'
result1 = f'|{s1:<10}|'

s2='center'
result2 = f'|{s1:^10}|'

s3='right'
result3 = f'|{s1:>10}|'

print(result1) # |left    |
print(result2) # | center |
print(result3) # |   right|

μ€‘κ΄„ν˜Έ μ•ˆμ—μ„œλ„ μ€‘κ΄„ν˜Έλ₯Ό 좜λ ₯ν•˜κ³  μ‹ΆμœΌλ©΄ μ€‘κ΄„ν˜Έ λ‘κ°œλ₯Ό μ‚¬μš©ν•˜λ©΄ 되고, μ€‘κ΄„ν˜Έμ™€ ν•¨κ»˜ λ³€μˆ˜μ˜ 값이 μ•„λ‹ˆλΌ λ³€μˆ˜ 이름을 κ·ΈλŒ€λ‘œ 좜λ ₯ν•˜κ³  μ‹ΆμœΌλ©΄ 3개λ₯Ό μ“°λ©΄ λœλ‹€.

 

λ”•μ…”λ„ˆλ¦¬μ™€ ν•¨κ»˜ μ“Έ λ•Œμ—λŠ” μ€‘κ΄„ν˜Έ μ•ˆμ—μ„œ d와 λŒ€κ΄„ν˜Έλ₯Ό 톡해 μ›ν•˜λŠ” 값을 κ°€μ Έμ˜¬ 수 μžˆλ‹€.

d = {'name': 'BlockDMask', 'gender': 'man', 'age': 100}
result = f'my name {d["name"]}, gender {d["gender"]}, age {d["age"]}'
print(result)

 

 

 

 

μ°Έκ³ 

  • κ³ κΈ‰νŒŒμ΄μ¬ ν”„λ‘œκ·Έλž˜λ° κ³Όλͺ© 이둠 및 μ‹€μŠ΅ μˆ˜μ—…

'Language > Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Python] 클래슀, 상속  (2) 2025.04.04
[Python] λ”•μ…”λ„ˆλ¦¬(Dictionary)  (0) 2025.03.19
[Python] λ°°μ—΄κ³Ό νŠœν”Œ(feat. FizzBuzz)  (1) 2025.03.11
[Python] 비ꡐ μ—°μ‚°μž, 논리 μ—°μ‚°μž  (0) 2025.03.11
[Python] λ³€μˆ˜μ™€ λ¬Έμžμ—΄ μž…μΆœλ ₯  (2) 2025.03.11
'Language/Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [Python] 클래슀, 상속
  • [Python] λ”•μ…”λ„ˆλ¦¬(Dictionary)
  • [Python] λ°°μ—΄κ³Ό νŠœν”Œ(feat. FizzBuzz)
  • [Python] 비ꡐ μ—°μ‚°μž, 논리 μ—°μ‚°μž
_루디_
_루디_
  • _루디_
    Rudy DevNote πŸ“˜
    _루디_
  • πŸ ν™ˆ ν™”λ©΄
    κΈ€μ“°κΈ° 관리
    • All (45)
      • Database (7)
        • λ°μ΄ν„°λ² μ΄μŠ€ 이둠 (7)
      • CodingTest (3)
        • Algorithm (2)
        • Data Structure (0)
        • Solving (0)
      • CS 지식 (9)
        • μ •λ³΄λ³΄ν˜Έλ‘  (6)
        • λ„€νŠΈμ›Œν¬ (3)
        • 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° (0)
      • Framework (4)
        • Node.js (1)
        • Nest.js (3)
        • Spring (0)
      • Design Pattern (1)
      • Language (8)
        • Java (0)
        • JavaScript (2)
        • TypeScript (0)
        • Python (6)
      • 인곡지λŠ₯(AI) (1)
        • λ¨Έμ‹ λŸ¬λ‹(ML) (1)
      • My Story (10)
        • 자격증 (2)
        • λŒ€νšŒ&ν”Œμ  ν›„κΈ° (3)
        • μš°μ•„ν•œν…Œν¬μ½”μŠ€ (5)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.1
_루디_
[Python] μ‹œν€€μŠ€ μžλ£Œν˜•(리슀트, νŠœν”Œ, range, λ¬Έμžμ—΄)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”