πŸ“š μŠ€ν„°λ””/파이썬 μŠ€ν„°λ”” κ°•μ˜μžλ£Œ

[1νŒ€/ν—ˆμ„œμ›] 2μ°¨μ‹œ 파이썬 μŠ€ν„°λ”” - μžλ£Œν˜•

ν—ˆμ„œμ› 2023. 3. 16. 22:57

참고자료 : 데이터 과학을 μœ„ν•œ 파이썬 ν”„λ‘œκ·Έλž˜λ° (μ΅œμ„±μ² )

2μ£Όμ°¨_μžλ£Œν˜•_κ°•μ˜μ•ˆ.pdf
1.43MB
2μ£Όμ°¨_μžλ£Œν˜•_과제.pdf
0.19MB
2μ°¨μ‹œ_μžλ£Œν˜•_κ³Όμ œλ‹΅μ•ˆ.pdf
0.27MB

2. 파이썬 기초 - 01 μžλ£Œν˜•

λ³€μˆ˜μ™€ μžλ£Œν˜• · ν™”λ©΄ μž…μΆœλ ₯κ³Ό 리슀트

 

ν•™μŠ΅λͺ©ν‘œ

  • λ³€μˆ˜μ˜ κ°œλ…, λ³€μˆ˜μ™€ λ©”λͺ¨λ¦¬μ˜ 단계에 λŒ€ν•΄ μ•Œμ•„λ³Έλ‹€.
  • λ³€μˆ˜λͺ…을 μ„ μ–Έν•˜λŠ” κ·œμΉ™μ— λŒ€ν•΄ μ΄ν•΄ν•œλ‹€.
  • κΈ°λ³Έ μžλ£Œν˜• (μ •μˆ˜ν˜•, μ‹€μˆ˜ν˜•, λΆˆλ¦°ν˜•)에 λŒ€ν•΄ ν•™μŠ΅ν•œλ‹€.
  • 사칙연산을 λΉ„λ‘―ν•œ κ°„λ‹¨ν•œ 연산을 μˆ˜ν–‰ν•œλ‹€.
  • μžλ£Œν˜• κ°„ λ³€ν™˜ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ³ , μžλ£Œν˜•μ„ ν™•μΈν•˜λŠ” 방법을 ν•™μŠ΅ν•œλ‹€.
  • μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν•™μŠ΅ν•˜κ³ . CLI ν™˜κ²½μ— λŒ€ν•΄ μ΄ν•΄ν•œλ‹€.
  • ν‘œμ€€ μž…λ ₯ ν•¨μˆ˜μΈ inputO ν•¨μˆ˜μ™€ ν‘œμ€€ 좜λ ₯ ν•¨μˆ˜μΈ print() ν•¨μˆ˜μ— λŒ€ν•΄ μ•Œμ•„λ³Έλ‹€.
  • 리슀트의 ν•„μš”μ„±κ³Ό κ°œλ…μ— λŒ€ν•΄ μ΄ν•΄ν•œλ‹€.
  • 리슀트의 κ°€μž₯ μ€‘μš”ν•œ νŠΉμ§•μΈ 인덱싱과 μŠ¬λΌμ΄μ‹±μ— λŒ€ν•΄ ν•™μŠ΅ν•œλ‹€.
  • 리슀트의 μ—°μ‚°κ³Ό 리슀트λ₯Ό μΆ”κ°€ν•˜κ³  μ‚­μ œν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³Έλ‹€.
  • νŒ¨ν‚Ήκ³Ό μ–ΈνŒ¨ν‚Ήμ— λŒ€ν•΄ μ•Œμ•„λ³΄κ³ . 이차원 λ¦¬μŠ€νŠΈμ— λŒ€ν•΄ μ΄ν•΄ν•œλ‹€.
  • 리슀트의 λ©”λͺ¨λ¦¬ 관리 방식에 λŒ€ν•΄ ν•™μŠ΅ν•œλ‹€.

λ³€μˆ˜μ™€ μžλ£Œν˜•

01 λ³€μˆ˜μ˜ 이해

  • λ³€μˆ˜μ™€ κ°’

  1. MyName의 이름은 Heoseowon이닀.
  2. MyName은 Heoseowon이닀.
  3. MyNameκ³Ό Heoseowon은 κ°™λ‹€.
  4. MyName에 Heoseowon을 넣어라.

일반적으둜 ‘=’ κΈ°ν˜ΈλŠ” ‘γ€œμ™€ κ°™λ‹€’둜 μ—¬κΈΈ 수 μžˆλ‹€.

ν•˜μ§€λ§Œ ν”„λ‘œκ·Έλž˜λ°μ—μ„œλŠ” “MyNameμ΄λΌλŠ” 곡간에 Heoseowonμ΄λΌλŠ” κΈ€μžλ₯Ό 넣어라.”둜 해석

μ •ν™•ν•˜κ²ŒλŠ” MyNameλΌλŠ” λ³€μˆ˜variable에 Heoseowoμ΄λΌλŠ” κ°’value을 λ„£μœΌλΌλŠ” λœ»μ΄λ‹€.

 

print(a + b) : a λ³€μˆ˜μ— μžˆλŠ” κ°’κ³Ό b λ³€μˆ˜μ— μžˆλŠ” 값을 더해 화면에 좜λ ₯ print(”a + b”) → 파이썬 μΈν„°ν”„λ¦¬ν„°λŠ” λ”°μ˜΄ν‘œ μ•ˆμ˜ 문자λ₯Ό ν•˜λ‚˜μ˜ κ°’μœΌλ‘œ 이해

: 파이썬 μΈν„°ν”„λ¦¬ν„°λŠ” λ”°μ˜΄ν‘œ μ•ˆμ˜ 문자λ₯Ό ν•˜λ‚˜μ˜ κ°’μœΌλ‘œ 보고 이 값을 κ·ΈλŒ€λ‘œ 화면에 좜λ ₯

→ λ³€μˆ˜μ— 값을 λ„£λŠ” κ³Όμ • : ν• λ‹Ή(assignment)

 

  • λ³€μˆ˜μ™€ λ©”λͺ¨λ¦¬
    • λ³€μˆ˜ 
      • μˆ˜ν•™ → ‘λ³€ν•  수 μžˆλŠ” 수’
      • ν”„λ‘œκ·Έλž˜λ° → ‘μ–΄λ– ν•œ 값을 μ €μž₯ν•˜λŠ” μž₯μ†Œ’ 
    • λ³€μˆ˜λ₯Ό μ €μž₯ν•˜λŠ” 물리적 μž₯μ†Œ→ λ©”λͺ¨λ¦¬(memory)
      즉, λ³€μˆ˜μ— 값이 μ €μž₯λ˜λŠ” 곡간을 λ©”λͺ¨λ¦¬λΌκ³  ν•˜κ³ , 이 λ³€μˆ˜μ˜ μ €μž₯ μœ„μΉ˜λ₯Ό λ©”λͺ¨λ¦¬ μ£Όμ†ŒλΌκ³  ν•œλ‹€. κ·Έλž˜μ„œ λ³€μˆ˜μ— λ“€μ–΄κ°€λŠ” 값은 λ°˜λ“œμ‹œ μ–΄λ–€ νŠΉμ •ν•œ λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό κ°–κ²Œ λœλ‹€.

λ³€μˆ˜λͺ… μ„ μ–Έ κ·œμΉ™

  • μ•ŒνŒŒλ²³, 숫자, 밑쀄(_)둜 μ„ μ–Έν•  수 μžˆλ‹€,
  • λ³€μˆ˜λͺ…은 μ˜λ―ΈμžˆλŠ” λ‹¨μ–΄λ‘œ ν‘œκΈ°ν•˜λŠ” 것이 μ’‹λ‹€.
  • λ³€μˆ˜λͺ…은 λŒ€μ†Œλ¬Έμžκ°€ κ΅¬λΆ„λœλ‹€.
  • νŠΉλ³„ν•œ μ˜λ―Έκ°€ μžˆλŠ” μ˜ˆμ•½μ–΄λŠ” μ‚¬μš©ν•  수 μ—†λ‹€.

02 μžλ£Œν˜•κ³Ό κΈ°λ³Έ μ—°μ‚°

- λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ κΈ°λ³Έ κ°œλ…

일반적으둜 ν•˜λ“œλ””μŠ€ν¬(μ΅œκ·Όμ—λŠ” SSD μ‚¬μš©)에 ν•„μš”ν•œ νŒŒμΌμ„ μ €μž₯ν•˜λ©΄,

κ·Έ νŒŒμΌμ€ μ–΄λŠ μ •λ„μ˜ μ €μž₯ 곡간을 μ‚¬μš©ν•˜κ²Œ λœλ‹€. 1KB, 10KB, 2MB ….

→ν•˜λ‚˜μ˜ λ³€μˆ˜λ₯Ό λ©”λͺ¨λ¦¬μ— μ €μž₯ν•  λ•Œ κ·Έ λ³€μˆ˜μ˜ 크기만큼 곡간(μΌμ •ν•œ μš©λŸ‰) 을 ν• λ‹Ήλ°›λŠ”λ‹€.

μ»΄ν“¨ν„°λŠ” 0κ³Ό 1, 두 가지 μ •λ³΄λ§Œ μ €μž₯ν•  수 μžˆμœΌλ―€λ‘œ μ΄μ§„μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€.

μ΄μ§„μˆ˜ ν•œ 자리λ₯Ό λΉ„νŠΈλΌκ³  ν•˜λ©°, 8개의 λΉ„νŠΈλŠ” 1λ°”μ΄νŠΈ(byte), 1,024λ°”μ΄νŠΈλŠ” 1ν‚¬λ‘œλ°”μ΄νŠΈ(kilobyte. KB), 1,024ν‚¬λ‘œλ°”μ΄νŠΈλŠ” 1λ©”κ°€λ°”μ΄νŠΈ(megabyte. MB)이닀.

κΈ°λ³Έ μžλ£Œν˜•
ν• λ‹Ήλ°›λŠ” λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ ν¬κΈ°λŠ” μ–΄λ–»κ²Œ κ²°μ •λ κΉŒ?
→ λ³€μˆ˜μ˜ μžλ£Œν˜•μ— μ˜ν•΄ κ²°μ •
μžλ£Œν˜•: λ³€μˆ˜κ°€ μ–΄λ–€ ν˜•νƒœμ˜ 데이터λ₯Ό μ €μž₯ν•˜λŠ”κ°€λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.
기본적으둜 μ •μˆ˜ν˜•, μ‹€μˆ˜ν˜•, λ¬Έμžν˜•, λΆˆλ¦°ν˜•μ΄ μžˆλ‹€

 

  • μ •μˆ˜ν˜•(integer type)
    μžμ—°μˆ˜λ₯Ό 포함해 0, 1. 2, "1, -2와 같이 κ°’μ˜ μ˜μ—­μ΄ μ •μˆ˜λ‘œ ν•œμ •λœ 값을 λœ»ν•œλ‹€.
    데이터λ₯Ό μ„ μ–Έν•  λ•ŒλŠ” data = 1κ³Ό 같은 λ°©μ‹μœΌλ‘œ μ„ μ–Έν•˜λ©°
    파이썬의 인터프리터가 μ•Œμ•„μ„œ λ©”λͺ¨λ¦¬ μ˜μ—­μ— ν•„μš”ν•œ 곡간을 ν™•λ³΄ν•œλ‹€.
    λ©”λͺ¨λ¦¬ 곡간은 λ³€μˆ˜μ˜ μžλ£Œν˜•κ³Ό 컴퓨터 μ‹œμŠ€ν…œμ˜ νƒ€μž…(32bit λ˜λŠ” 64bit)에 따라 λ‹€λ₯΄λ‹€.
  • μ‹€μˆ˜ν˜•(floating-point type)
    μ†Œμˆ˜μ μ΄ ν¬ν•¨λœ 값을 λœ»ν•œλ‹€. 10.2, 7.2 …
    μ‹€μ œλ‘œ 값이 μ •μˆ˜ν˜•μ΄λΌλ„ 9.0으둜 μž…λ ₯ν•˜λ©΄ μΈν„°ν”„λ¦¬ν„°λŠ” μ‹€μˆ˜ν˜•μœΌλ‘œ ν•΄μ„ν•œλ‹€.
  • λ¬Έμžν˜•(string type)
    값이 문자둜 좜λ ₯λ˜λŠ” μžλ£Œν˜•μ„ λœ»ν•œλ‹€.
    νŒŒμ΄μ¬μ—μ„œλŠ” 보톡 λ”°μ˜΄ν‘œμ— λ“€μ–΄κ°„ 정보λ₯Ό λ¬Έμžν˜• 데이터라고 함!
    ν°λ”°μ˜΄ν‘œλ‚˜ μž‘μ€λ”°μ˜΄ν‘œ μ•ˆμ— μžˆλ‹€λ©΄ λͺ¨λ‘ λ¬Έμžν˜•μ΄λ‹€.
  • λΆˆλ¦°ν˜•(boolean type)
    λ…Όλ¦¬ν˜•μ΄λΌκ³ λ„ ν•˜λ©°, μ°Έ(True) λ˜λŠ” 거짓(False)을 ν‘œν˜„ν•  λ•Œ μ‚¬μš©ν•œλ‹€.
    λ§Œμ•½ 값이 True라면 참을 μ˜λ―Έν•˜λ©°, μ»΄ν“¨ν„°μ—μ„œλŠ” 1을 λœ»ν•œλ‹€.
    λ°˜λŒ€λ‘œ False라면 거짓을 μ˜λ―Έν•˜λ©°, μ»΄ν“¨ν„°μ—μ„œλŠ” 0을 λœ»ν•œλ‹€.

κ°„λ‹¨ν•œ μ—°μ‚°

νŒŒμ΄μ¬μ—μ„œλŠ” λ‹€μ–‘ν•œ μžλ£Œν˜•μ„ μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ 연산이 κ°€λŠ₯ν•˜λ‹€.

기본적으둜 연산은 μ—°μ‚°μžμ™€ ν”Ό μ—°μ‚°μžλ‘œ ꡬ뢄할 수 μžˆλ‹€.

  • μ—°μ‚°μž: +, -, *, / 기호
  • ν”Ό μ—°μ‚°μž: μ—°μ‚°μžμ— μ˜ν•΄ κ³„μ‚°λ˜λŠ” 숫자 → ‘3+2’μ—μ„œ +λŠ” μ—°μ‚°μž, 3κ³Ό 2λŠ” ν”Όμ—°μ‚°μž
    특히, 문자 간에도 + 연산이 κ°€λŠ₯함!!

03 μžλ£Œν˜• λ³€ν™˜

  • μ •μˆ˜ν˜•κ³Ό μ‹€μˆ˜ν˜• κ°„ λ³€ν™˜
  • λ³€μˆ˜μ˜ μžλ£Œν˜•μ€ float() ν•¨μˆ˜λ‚˜ int() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ 맀우 κ°„λ‹¨ν•˜κ²Œ λ³€ν™˜ν•  수 μžˆλ‹€.

    • μ‹€μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜ν•΄μ£ΌλŠ” ν•¨μˆ˜ float()
    • μ‹€μˆ˜ν˜•μ„ μ •μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜ν•΄μ£ΌλŠ” ν•¨μˆ˜ int()

μ‹€μˆ˜ν˜•μ΄ μ •μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜λ˜μ–΄ μ†Œμˆ˜μ  μ΄ν•˜μ˜ 내림이 λ°œμƒν•œλ‹€.
ν”νžˆ μˆ˜ν•™μ—μ„œ μ •μˆ˜ν˜•μœΌλ‘œ λ°”κΎΌλ‹€κ³  ν•˜λ©΄ 반올림이 μΌμ–΄λ‚˜μ§€λ§Œ, μ—¬κΈ°μ—μ„œλŠ” 내림이 λ°œμƒν•œλ‹€.
→ 기쑴의 μˆ˜ν•™κ³Ό λ‹€λ₯Έ 점!!!

파이썬 μΈν„°ν”„λ¦¬ν„°μ˜ νŠΉμ§•!!
μΈν„°ν”„λ¦¬ν„°λŠ” λ³€μˆ˜ κ°„ 계산할 λ•Œ ν•„μš”ν•˜λ‹€κ³  μƒκ°λ˜λ©΄ 슀슀둜 μ •μˆ˜ν˜•μ„ μ‹€μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜ν•œλ‹€.

 

  • μ •μˆ˜ν˜•μ΄λ‚˜ μ‹€μˆ˜ν˜•μ„ λ¬Έμžμ—΄λ‘œ λ°”κΎΈλŠ” ν•¨μˆ˜ str()
  • μžλ£Œν˜• ν™•μΈν•˜κΈ°
    • μžλ£Œν˜•μ„ ν™•μΈν•˜λŠ” ν•¨μˆ˜ type()

 ν™”λ©΄ μž…μΆœλ ₯κ³Ό 리슀트

01 파이썬 ν”„λ‘œκ·Έλž˜λ° ν™˜κ²½

μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€(user interface): 컴퓨터에 λͺ…령을 μž…λ ₯ν•  λ•Œ μ‚¬μš©ν•˜λŠ” ν™˜κ²½

λŒ€ν‘œμ μΈ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ‘œ GUI (Graphical User Interface)κ°€ μžˆλ‹€.

이 GUI ν™˜κ²½μ—μ„œλŠ” μ—¬λŸ¬ 가지 도ꡬ가 μ‚¬μš©λ˜λŠ”λ°, λŒ€ν‘œμ μœΌλ‘œ λ§ˆμš°μŠ€μ™€ μ•„μ΄μ½˜μ΄ μžˆλ‹€.

GUI ν™˜κ²½μ—μ„œ μ•„μ΄μ½˜μ„ ν•˜λ‚˜ ν΄λ¦­ν•˜λ©΄ 그에 λŒ€ν•œ λͺ…령이 μ‹€ν–‰λœλ‹€. μ΄μ „κΉŒμ§€ 컴퓨터 μ‚¬μš©μž λŒ€λΆ€λΆ„μ€ CLI (Command Line Interface) ν™˜κ²½μ„ μ‚¬μš©ν•˜μ˜€λ‹€.

CLIλŠ” 마우슀의 클릭이 μ•„λ‹Œ ν‚€λ³΄λ“œλ§ŒμœΌλ‘œ λͺ…령을 μž…λ ₯ν•˜λŠ” ν™˜κ²½μ΄λ‹€.

CLI ν™˜κ²½

CLIλŠ” 맀우 였래된 컴퓨터 μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€ μ²΄κ³„λ‘œ λͺ¨λ“  μš΄μ˜μ²΄μ œμ—μ„œ 기본으둜 μ§€μ›ν•œλ‹€.

예λ₯Ό λ“€μ–΄, 이미 νŒŒμ΄μ¬μ„ μ„€μΉ˜ν•˜λ©΄μ„œ μ‚¬μš©ν•œ Cmd μ°½. 즉 λͺ…λ Ήμ–΄ μ°½(command window)은 μœˆλ„μš°μ—μ„œ μ œκ³΅ν•˜λŠ” λŒ€ν‘œμ μΈ CLI ν™˜κ²½μ΄λ‹€.

 

02 ν™”λ©΄ μž…μΆœλ ₯

  • ν‘œμ€€ μž…λ ₯ ν•¨μˆ˜ : input() ν•¨μˆ˜
    input() ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ μ‚¬μš©μžκ°€ μ½˜μ†” μ°½μ—μ„œ λ¬Έμžμ—΄μ„ μž…λ ₯λ°›λŠ” ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€ 수 μžˆλ‹€.
    νŒŒμ΄μ¬μ—μ„œλŠ” μ½˜μ†” μ°½μ—μ„œ μž…λ ₯을 λ°›κΈ° μœ„ν•΄ ν‘œμ€€ μž…λ ₯ ν•¨μˆ˜μΈ input() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€.
  • ν‘œμ€€ μž…λ ₯ ν•¨μˆ˜ : print() ν•¨μˆ˜
    print() ν•¨μˆ˜ μ•ˆμ— μžˆλŠ” 콀마(,) → ν•œ 칸을 띄고 화면에 좜λ ₯λœλ‹€.
    즉 μ—¬λŸ¬ 값을 μ—°κ²°ν•΄ 화면에 좜λ ₯ν•  수 μžˆλ‹€. λΉ„μŠ·ν•œ λ°©λ²•μœΌλ‘œ λ¬Έμžν˜• 간에 + 기호λ₯Ό μ‚¬μš©ν•΄ μ—°κ²°ν•  수 μžˆλ‹€.
    input() ν•¨μˆ˜μ— λ°”λ‘œ μ§€μ‹œλ¬Έμ„ 넣을 μˆ˜λ„ μžˆλ‹€.

    input() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œ μœ μ˜ν•  점
    input() ν•¨μˆ˜κ°€ 값을 μž…λ ₯ λ°›μœΌλ©΄ κ·Έ κ°’μ˜ μžλ£Œν˜•μ€ λ¬Έμžν˜•μ΄ λœλ‹€.

    파일 μž…μΆœλ ₯ 정리
    μ‹€μ œλ‘œ 파이썬으둜 ν”„λ‘œκ·Έλž˜λ°μ„ λ°°μ›Œ GUI ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λŠ” κ²½μš°λŠ” κ·Έλ ‡κ²Œ λ§Žμ§€ μ•Šλ‹€.
    λ¬Όλ‘  μ–΄λ–€ 업무λ₯Ό ν•˜λŠ”μ§€μ— 따라 μ‘°κΈˆμ”© λ‹€λ₯΄κ² μ§€λ§Œ 일반적으둜 GUI ν”„λ‘œκ·Έλž¨λ³΄λ‹€λŠ” CLI 기반의 ν”„λ‘œκ·Έλž¨μ„ 더 많이 κ°œλ°œν•˜κ²Œ 될 것이닀. νŒŒμ΄μ¬λ„ GUIλ₯Ό μ§€μ›ν•˜λŠ” 도ꡬ듀이 μžˆμ§€λ§Œ, C ++λ‚˜ μžλ°”μ²˜λŸΌ ν™œλ°œν•˜κ²Œ μ‚¬μš©λ˜μ§€λŠ” μ•ŠλŠ”λ‹€.

04 리슀트의 이해

  • λ¦¬μŠ€νŠΈκ°€ ν•„μš”ν•œ 이유
  • 리슀트(list) → ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” μžλ£Œν˜•μœΌλ‘œ λ°°μ—΄array이라고도 ν•œλ‹€.
  • 리슀트의 κ°œλ…
    λ¦¬μŠ€νŠΈλŠ” ν•˜λ‚˜μ˜ λ³€μˆ˜μ— μ—¬λŸ¬ 값을 μ €μž₯ν•˜λŠ” μžλ£Œν˜•μ΄λ‹€.
    → μ—¬λŸ¬ 데이터λ₯Ό ν•˜λ‚˜μ˜ λ³€μˆ˜μ— μ €μž₯ν•˜λŠ” 기법을 νŒŒμ΄μ¬μ—μ„œλŠ” μ‹œν€€μŠ€ μžλ£Œν˜•μ΄λΌκ³  ν•œλ‹€.λ¦¬μŠ€νŠΈμ—λŠ” ν•˜λ‚˜μ˜ μžλ£Œν˜•λ§Œ μ €μž₯ν•˜μ§€ μ•Šκ³ , μ •μˆ˜ν˜•, μ‹€μˆ˜ν˜• λ“± λ‹€μ–‘ν•œ μžλ£Œν˜•μ„ 포함할 수 μžˆλ‹€.
    Cλ‚˜ μžλ°”μ™€ 같은 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œλŠ” λ°°μ—΄μ΄λΌλŠ” ν‘œν˜„μ„ 더 많이 μ‚¬μš©ν•œλ‹€. λ¬Όλ‘  νŒŒμ΄μ¬μ—μ„œλ„ λ°°μ—΄μ˜ κ°œλ…μ΄ μžˆμ§€λ§Œ, μ‹œν€€μŠ€ μžλ£Œν˜•μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄μ„œ 리슀트λ₯Ό μ‚¬μš©ν•œλ‹€.
    μ‹œν€€μŠ€ μžλ£Œν˜•μ€ μ—¬λŸ¬ 자료λ₯Ό μˆœμ„œλŒ€λ‘œ λ„£λŠ”λ‹€λŠ” λœ»μ΄λ‹€.

  • 인덱싱과 μŠ¬λΌμ΄μ‹±
  • 인덱싱(indexing)
  • 인덱싱: λ¦¬μŠ€νŠΈμ— μ €μž₯λ˜μ–΄ μžˆλŠ” 값에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄ 이 κ°’μ˜ μƒλŒ€μ μΈ μ£Όμ†Œλ₯Ό μ‚¬μš©ν•˜λŠ” 것
    μ£Όμ†ŒλŠ” 첫 번째 값을 0으둜 ν–ˆμ„ λ•Œ 첫 번째 κ°’κ³Ό μ–Όλ§ˆλ‚˜ λ–¨μ–΄μ Έ μžˆλŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ²ƒμœΌλ‘œ, 인덱슀 μ£Όμ†Œ λ˜λŠ” μΈλ±μŠ€κ°’μ΄λΌκ³  ν•œλ‹€.

  • 리슀트의 μ£Όμ†Œκ°’μ€ μ™œ 0λΆ€ν„° μ‹œμž‘ν•˜λŠ”κ°€?
    λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ λ°°μ—΄(array)κ³Ό 같은 λ³€μˆ˜μ˜ μ£Όμ†Œκ°’μ€ 0λΆ€ν„° μ‹œμž‘ν•œλ‹€. μ—¬λŸ¬ 가지 μ΄μœ κ°€ μžˆμ§€λ§Œ, 1λΆ€ν„° μ‹œμž‘ν•˜λŠ” 것보닀 0λΆ€ν„° μ‹œμž‘ν•˜λ©΄ μ΄μ§„μˆ˜ κ΄€μ μ—μ„œ λ©”λͺ¨λ¦¬λ₯Ό μ ˆμ•½ν•  수 μžˆλ‹€.λ˜ν•œ 1 λ³΄λ‹€λŠ” 0λΆ€ν„° μ‹œμž‘ν•˜λŠ” 것이 μ§„μˆ˜μ—μ„œ 00λΆ€ν„° μ‚¬μš©ν•  수 μžˆλŠ” μž₯점도 μžˆλ‹€. λ‹€λ§Œ λΉ„μ£Όμ–Ό 베이직, 맀트랩 같은 μ–Έμ–΄μ—μ„œλŠ” 1 λΆ€ν„° 인덱싱을 ν•œλ‹€.

  • μŠ¬λΌμ΄μ‹±(slicing)
  • μŠ¬λΌμ΄μ‹±: 리슀트의 인덱슀 κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ 전체 λ¦¬μŠ€νŠΈμ—μ„œ 일뢀λ₯Ό μž˜λΌλ‚΄μ–΄ μ‚¬μš©ν•˜λŠ” 것
  • μŠ¬λΌμ΄μ‹±μ˜ κΈ°λ³Έ 문법
    λ³€μˆ˜λͺ…[μ‹œμž‘ 인덱슀:λ§ˆμ§€λ§‰ 인덱슀-1]
  • λ¦¬λ²„μŠ€ 인덱슀(reverse index)
  • λ¦¬λ²„λΈŒ 인덱슀: λ§ˆμ§€λ§‰ κ°’λΆ€ν„° -1을 ν• λ‹Ήν•˜μ—¬ 첫 번째 κ°’κΉŒμ§€ μ—­μˆœμœΌλ‘œ μ˜¬λΌμ˜€λŠ” 방식
    μ‹œμž‘ μΈλ±μŠ€κ°€ λΉ„μ–΄ 있으면 μ²˜μŒλΆ€ν„°, λ§ˆμ§€λ§‰ μΈλ±μŠ€κ°€ λΉ„μ–΄ 있으면 λ§ˆμ§€λ§‰κΉŒμ§€λΌλŠ” 의미

  • 인덱슀 λ²”μœ„λ₯Ό λ„˜μ–΄κ°€λŠ” μŠ¬λΌμ΄μ‹±(slicing with over index)
    μŠ¬λΌμ΄μ‹±μ„ ν•  λ•Œ 인덱슀의 첫 번째 κ°’μ΄λ‚˜ λ§ˆμ§€λ§‰ 값이 λΉ„μ–΄ μžˆμ–΄λ„ 잘 μž‘λ™ν•œλ‹€.
  • 인덱슀λ₯Ό λ”°λ‘œ 넣지 μ•Šκ³  cities[:]κ³Ό 같이 μ½œλ‘ μ„ λ„£μœΌλ©΄ cities λ³€μˆ˜μ˜ λͺ¨λ“  값을 λ°˜ν™˜
    -> [0:λ§ˆμ§€λ§‰ 인덱슀]κΉŒμ§€ μž…λ ₯ν•˜κ±°λ‚˜ [0:]이라고 μŠ¬λΌμ΄μ‹±ν•˜λŠ” 것과 κ²°κ³ΌλŠ” κ°™λ‹€.
  • 인덱슀λ₯Ό λ„˜μ–΄μ„œκ±°λ‚˜ μž…λ ₯ν•˜μ§€ μ•ŠλŠ” 경우 μžλ™μœΌλ‘œ μ‹œμž‘κ³Ό λ§ˆμ§€λ§‰ 인덱슀둜 지정cities[-50:50]처럼 λ²”μœ„λ₯Ό λ„˜μ–΄κ°€λŠ” 인덱슀λ₯Ό μž…λ ₯ν•˜λŠ” κ²½μš°λ„ λ™μΌν•˜κ²Œ ν•΄λ‹Ή 리슀트의 μ‹œμž‘λΆ€ν„° λκΉŒμ§€μ˜ μΈλ±μŠ€κ°’μœΌλ‘œ 데이터λ₯Ό λΆˆλŸ¬μ˜¨λ‹€.
  • 증가값(step)
  • μŠ¬λΌμ΄μ‹±μ—μ„œλŠ” μ‹œμž‘ μΈλ±μŠ€μ™€ λ§ˆμ§€λ§‰ 인덱슀 외에도 λ§ˆμ§€λ§‰ μžλ¦¬μ— 증가값을 넣을 수 μžˆλ‹€.
    λ³€μˆ˜λͺ…[μ‹œμž‘ 인덱슀:λ§ˆμ§€λ§‰ 인덱슀:증가값]
  • 리슀트의 μ—°μ‚°
    • λ§μ…ˆ μ—°μ‚°
    • κ³±μ…ˆ μ—°μ‚°
    • in μ—°μ‚°
  • 리슀트 μΆ”κ°€ 및 μ‚­μ œ
    • append() ν•¨μˆ˜
      append() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ 리슀트 맨 λ§ˆμ§€λ§‰ μΈλ±μŠ€μ— μƒˆλ‘œμš΄ 값을 μΆ”κ°€ν•  수 μžˆλ‹€.
    • extend() ν•¨μˆ˜
      extend() ν•¨μˆ˜λŠ” 리슀트의 λ§μ…ˆ μ—°μ‚°κ³Ό κ°™λ‹€.
      즉, 값을 μΆ”κ°€ν•˜λŠ” 것이 μ•„λ‹Œ κΈ°μ‘΄ λ¦¬μŠ€νŠΈμ— κ·ΈλŒ€λ‘œ μƒˆλ‘œμš΄ 리슀트λ₯Ό ν•©μΉ˜λŠ” κΈ°λŠ₯을 ν•œλ‹€.

    • insert() ν•¨μˆ˜
      리슀트의 맨 λ§ˆμ§€λ§‰μ— 값이 λ“€μ–΄κ°€λŠ” 것이 μ•„λ‹ˆλΌ μ§€μ •ν•œ μœ„μΉ˜μ— 값이 λ“€μ–΄κ°„λ‹€.

    • remove() ν•¨μˆ˜
      remove() ν•¨μˆ˜λŠ” λ¦¬μŠ€νŠΈμ— μžˆλŠ” νŠΉμ • 값을 μ§€μš°λŠ” κΈ°λŠ₯을 ν•œλ‹€.
      μ‚­μ œν•  값을 remove() ν•¨μˆ˜ μ•ˆμ— λ„£μœΌλ©΄ λ¦¬μŠ€νŠΈμ— μžˆλŠ” ν•΄λ‹Ή 값이 μ‚­μ œλœλ‹€.

  • 인덱슀의 μž¬ν• λ‹Ήκ³Ό μ‚­μ œ
    νŠΉμ • μΈλ±μŠ€κ°’μ„ λ³€κ²½ν•˜κΈ° μœ„ν•΄μ„œλŠ” μΈλ±μŠ€μ— μƒˆλ‘œμš΄ 값을 ν• λ‹Ήν•˜λ©΄ λœλ‹€.
    νŠΉμ • μΈλ±μŠ€κ°’μ„ μ‚­μ œν•˜κΈ° μœ„ν•΄μ„œλŠ” del ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€. del ν•¨μˆ˜λŠ” 리슀트의 νŠΉμ • 값을 μ§€μš°λŠ” ν•¨μˆ˜λŠ” μ•„λ‹ˆκ³ , λ³€μˆ˜ 자체λ₯Ό μ‚­μ œν•˜λŠ” λͺ…령이닀.
    λ§Œμ•½ del ν•¨μˆ˜μ— 리슀트 λ‚΄ νŠΉμ • 인덱슀λ₯Ό μ§€μ •ν•˜λ©΄, remove() ν•¨μˆ˜μ²˜λŸΌ ν•΄λ‹Ή μΈλ±μŠ€κ°’μ„ μ‚­μ œν•˜κ³  κ·Έ 이후에 μžˆλŠ” 값듀을 μ•žμœΌλ‘œ μ΄λ™μ‹œν‚¨λ‹€.