🐍 파이썬 μ±Œλ¦°μ§€ DAY+05

yhwaΒ·2023λ…„ 2μ›” 17일
0
post-thumbnail

πŸ“Python으둜 μ›Ή 슀크래퍼 λ§Œλ“€κΈ°: From #4.0 to #4.4

자료ꡬ쑰 (data structure)λ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터 ꡬ쑰화에 λŒ€ν•΄ μ΄ν•΄ν•˜κΈ°
Method
파이썬의 데이터 ꡬ쑰 : List, Tuple, Dictionary

자료ꡬ쑰 (Data Structure)

- 데이터λ₯Ό κ΅¬μ‘°ν™”ν•˜κ³  μ‹Άμ„λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

λ©”μ†Œλ“œ(Method)와 ν•¨μˆ˜(function)의 차이

- λ©”μ†Œλ“œμ™€ ν•¨μˆ˜λŠ” λ‹€λ₯Όκ²ƒμ΄ μ—†μŠ΅λ‹ˆλ‹€, κ΄„ν˜Έκ°€ 있고, κ΄„ν˜Έλ‘œ ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜λ©°,
- λ§€κ°œλ³€μˆ˜(argument)도 κ°€μ§‘λ‹ˆλ‹€.
- 차이점은 ν˜ΈμΆœν•˜λŠ” λ°©μ‹μ—λ§Œ μžˆμŠ΅λ‹ˆλ‹€. κ·Έκ²ƒμœΌλ‘œ κ΅¬λ³„ν•©λ‹ˆλ‹€.
- ν•¨μˆ˜κ°€ 데이터와 κ²°ν•©λ˜μ–΄ μžˆλ‹€λ©΄, λ©”μ†Œλ“œλ‘œ λΆ€λ₯΄κ³  μ•„λ‹ˆλ©΄ ν•¨μˆ˜λΌκ³  ν•©λ‹ˆλ‹€.
- λ©”μ†Œλ“œλŠ” 데이터와 κ²°ν•©λœ function을 λ§ν•©λ‹ˆλ‹€.
- νŒŒμ΄μ¬μ€ λ³€μˆ˜ μ•ˆμ— λ‹€μ–‘ν•œ function듀을 가지고 μžˆμŠ΅λ‹ˆλ‹€.
- λ³€μˆ˜μ˜ .뒀에 λ‚˜νƒ€λ‚˜λŠ” λͺ¨λ“  function듀은 λ³€μˆ˜μ™€ κ²°ν•©λœ κ²ƒμž…λ‹ˆλ‹€.
- stringμ΄λ‚˜ number와 같은 것듀이 내뢀에 가지고 μžˆλŠ” ν•¨μˆ˜λŠ” 
- function이 μ•„λ‹ˆλΌ method라고 λΆ€λ¦…λ‹ˆλ‹€.
- methodλŠ” 데이터 뒀에 κ²°ν•©/μ—°κ²°λœ function을 λ§ν•©λ‹ˆλ‹€.
- 데이터와 κ²°ν•©λ˜μ–΄μžˆλŠ” function을 λ©”μ†Œλ“œλΌκ³  ν•©λ‹ˆλ‹€.
- string인 name λ³€μˆ˜ μ•ˆμ—λŠ” capitalizeλ‚˜, upperλΌλŠ” λ©”μ†Œλ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
- stringμ—λŠ” 데이터λ₯Ό λ³€ν™˜,μ‘°μž‘ λ˜λŠ” μ‚¬μš©ν•  수 μžˆλŠ” κ²°ν•©λœ ν•¨μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.
name = "john"

#function
print(name.title)

#method
print(name.upper()) # ==> JOHN
print(name.capitalize()) # ==> John
print(name.startwith("j")) # ==> True
print(name.replace("j","b")) # ==> bohn
print(name.endswith("n")) # ==> True
print(name.)

리슀트 (List)

- listλŠ” 1개의 λ³€μˆ˜ μ•ˆμ— λͺ¨λ“  데이터가 μ‘΄μž¬ν•΄μ•Όν•©λ‹ˆλ‹€.
- listμ•ˆμ— 데이터λ₯Ό 넣을 λ•ŒλŠ” μ‰Όν‘œλ₯Ό μ‚¬μš©ν•΄μ„œ 데이터λ₯Ό λΆ„λ¦¬ν•©λ‹ˆλ‹€.
- λ¦¬μŠ€νŠΈμ— κ²°ν•©λœ λ©”μ†Œλ“œλ₯Ό μ‚΄νŽ΄λ΄…λ‹ˆλ‹€.
- ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œλŠ” modify(μˆ˜μ •ν•˜λ‹€)λŠ” mutate(λ³€ν™”μ‹œν‚€λ‹€)λΌλŠ” μ˜λ―Έμž…λ‹ˆλ‹€.
- clear λ©”μ†Œλ“œλŠ” days_of_weekλ₯Ό mutateν•œλ‹€κ³  ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- 데이터λ₯Ό μ˜μ›νžˆ λ³€κ²½μ‹œν‚΅λ‹ˆλ‹€.
- 데이터 가곡에 λ„μ›€μ΄λ˜λŠ” λ©”μ†Œλ“œλ“€μ„ 많이 κ°€μ§€κ³ μžˆμŠ΅λ‹ˆλ‹€.
- λ¦¬μŠ€νŠΈμ— μžˆλŠ” νŠΉμ • μ•„μ΄ν…œμ— μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- λ¦¬μŠ€νŠΈμ—μ„œ μ ‘κ·Όν•˜κ³ μ‹Άμ€ μ•„μ΄ν…œμ˜ 인덱슀λ₯Ό λ„£μ–΄μ€λ‹ˆλ‹€.
- 인간은 1λΆ€ν„° μ„Έμ§€λ§Œ, μ»΄ν“¨ν„°λŠ” 0λΆ€ν„° 인덱슀λ₯Ό μ…‰λ‹ˆλ‹€.
- μ›ν•œλ‹€λ©΄ 리슀트 μ•ˆμ— 리슀트λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.
- μ–΄λ–€ μ’…λ₯˜μ˜ 데이터든지 리슀트둜 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- λ¦¬μŠ€νŠΈλŠ” μ›ν•˜λŠ” μ–΄λ–€ 것이든 λ‹€ 담을 수 μžˆμŠ΅λ‹ˆλ‹€.
days_of_week = ["μ›”","ν™”","수","λͺ©","금","ν† ","일"]

#method
print(days_of_week.count("수")) # ==> 1

days_of_week.clear()
print(days_of_week) # ==> []

days_of_week.reverse()
print(days_of_week) # ==> ["일","ν† ","금","λͺ©","수","ν™”","μ›”"]

days_of_week.append("곡휴일")
print(days_of_week) # ==> ["μ›”","ν™”","수","λͺ©","금","ν† ","일","곡휴일"]

days_of_week.remove("수")
print(days_of_week) # ==> ["μ›”","ν™”","λͺ©","금","ν† ","일"]

print(days_of_week[4]) # ==> ν† 

#listμ•ˆμ— 넣을 수 μžˆλŠ” 데이터듀
days_of_week = [1,2,3,True,False,"Hello","Hi",[1,2,3]]

νŠœν”Œ (Tuple)

- λ¦¬μŠ€νŠΈμ™€ 거의 λ™μΌν•˜μ§€λ§Œ, 더 κ°„λ‹¨ν•˜κ²Œ λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€.
- νŠœν”Œκ³Ό 리슀트의 차이점은 νŠœν”Œμ€ λΆˆλ³€μ„±μ„ κ°€μ§„λ‹€λŠ” μ μž…λ‹ˆλ‹€.
- νŠœν”Œμ€ λ³€κ²½ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
- νŠœν”Œμ€ λ¦¬μŠ€νŠΈμ™€ 달리 λ©”μ„œλ“œλ‘œ μ‚¬μš©ν•  수 μžˆλŠ”κ²ƒμ΄ λͺ‡κ°€μ§€ μ—†μŠ΅λ‹ˆλ‹€.
- λ¦¬μŠ€νŠΈμ™€ 같이 append,reverse,clear,removeλŠ” νŠœν”Œμ—μ„œ μ°Ύμ„μˆ˜μ—†μŠ΅λ‹ˆλ‹€.
- νŠœν”Œμ€ λΆˆλ³€ν•˜κΈ° λ•Œλ¬Έμ—, νŠœν”Œμ„ λ§Œλ“€λ©΄ κ·Έ λ‚΄μš©μ„ λ³€κ²½ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
- λ¦¬μŠ€νŠΈμ—μ„œ ν–ˆλ˜ κ²ƒμ²˜λŸΌ 인덱슀둜 νŠœν”Œ λ˜ν•œ μ•„μ΄ν…œμ— μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- λŒ€κ΄„ν˜Έλ‘œ λ¦¬μŠ€νŠΈλ‚˜ νŠœν”Œμ˜ μ•„μ΄ν…œμ— μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- μ•„μ΄ν…œμ€ λ’€μ—μ„œ μ•žμœΌλ‘œλ„ μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. -1λΆ€ν„° λ’€μ—μ„œλΆ€ν„° μ‹œμž‘ν•©λ‹ˆλ‹€.
- νŠœν”Œκ³Ό 리슀트 λͺ¨λ‘ λ’€μ—μ„œ λΆ€ν„° μ ‘κ·Όν•˜λŠ” 방법이 μ μš©λ©λ‹ˆλ‹€.
- ν”„λ‘œκ·Έλž¨μ—μ„œ μ–΄λ– ν•œκ²ƒμ„ λΆˆλ³€μœΌλ‘œ 할지 λ³€ν•˜κ²Œν• μ§€ 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.
- 두가지 λͺ¨λ‘ μ •λ ¬λœ 리슀트, μ •λ ¬λœ μ•„μ΄ν…œμ˜ 집합을 μ€λ‹ˆλ‹€.
- 두가지 λͺ¨λ‘ μ•„μ΄ν…œμ˜ 인덱슀둜 각각의 μ•„μ΄ν…œμ— μ ‘κ·Όν•˜κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- κ·Έ 쀑 λ¦¬μŠ€νŠΈλŠ” μˆ˜μ •μ΄ κ°€λŠ₯ν•˜κ³ , νŠœν”Œμ€ μˆ˜μ •μ΄ λΆˆκ°€ν•©λ‹ˆλ‹€.
- λ¦¬μŠ€νŠΈμ™€ νŠœν”Œ λ‘˜λ‹€ μ •λ ¬λœ μ•„μ΄ν…œμ˜ μ§‘ν•©μž…λ‹ˆλ‹€.
# 리슀트 (λŒ€κ΄„ν˜Έ)
days = ["μ›”","ν™”","수","λͺ©","금","ν† ","일"]

# νŠœν”Œ (κ΄„ν˜Έ)
days = ("μ›”","ν™”","수","λͺ©","금","ν† ","일")

print(days.count("ν™”")) # ==> 1
print(days[2]) # ==> 수
print(days[-1]) # ==> 일

λ”•μ…”λ„ˆλ¦¬ (Dictionary)

- λ”•μ…”λ„ˆλ¦¬ 이름을 μ“°κ³  μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
- λ”•μ…”λ„ˆλ¦¬μ˜ 뜻 사전과 같이 단어와 뜻이 μžˆμŠ΅λ‹ˆλ‹€.
- 단어-μ •μ˜κ°€ key-value pairμž…λ‹ˆλ‹€.
- ν‚€λŠ” 단어, 값은 μ •μ˜μž…λ‹ˆλ‹€.
- μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
- νŠœν”Œμ΄λ‚˜ λ¦¬μŠ€νŠΈμ™€ 달리 더 λ³΅μž‘ν•œ 데이터ꡬ쑰λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.
- λ”•μ…”λ„ˆλ¦¬μ˜ μ†μ„±μ•ˆμ—μ„œ string, number, boolean λ“±λ“± μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- λ”•μ…”λ„ˆλ¦¬λ„ λ¦¬μŠ€νŠΈλ‚˜ νŠœν”Œκ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ, λ©”μ†Œλ“œκ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€.
- λ¦¬μŠ€νŠΈλ‚˜ νŠœν”Œμ€ μ •λ ¬λœ λ°μ΄ν„°μ΄κΈ°λ•Œλ¬Έμ—, 인덱슀λ₯Ό μ‚¬μš©ν•˜μ—¬ μ•„μ΄ν…œμ— μ ‘κ·Όν•˜μ˜€μœΌλ‚˜ λ”•μ…”λ„ˆλ¦¬λŠ” λ‹€λ¦…λ‹ˆλ‹€.
- λ”•μ…”λ„ˆλ¦¬λŠ” ν‚€-κ°’ 쌍으둜 μ΄λ£¨μ–΄μ ΈμžˆκΈ°λ•Œλ¬Έμ— ν‚€λ‘œ 값을 κ΅¬ν•©λ‹ˆλ‹€.
- λ”•μ…”λ„ˆλ¦¬μ˜ μš©λ„μ™€ 리슀트의 μš©λ„λŠ” λ‹€λ¦…λ‹ˆλ‹€.
- 숫자 λͺ©λ‘μ΄λ‚˜, to-do λͺ©λ‘, μ–΄λ–€ λͺ©λ‘μ΄ μžˆλ‹€λ©΄ 그것은 λ¦¬μŠ€νŠΈλ‚˜, νŠœν”Œμ΄ 될수 μžˆμŠ΅λ‹ˆλ‹€.
- λ”•μ…”λ„ˆλ¦¬λŠ” λ§Žμ€ 속성듀을 가지고 μžˆλŠ” 데이터λ₯Ό λ§Œλ“€ λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
- λ”•μ…”λ„ˆλ¦¬ μ•ˆμ— μžˆλŠ” μ•„μ΄ν…œμ„ 가지고 μžˆλŠ” 방법은 2κ°€μ§€μž…λ‹ˆλ‹€.
- λ”•μ…”λ„ˆλ¦¬λ₯Ό μƒμ„±ν•œ ν›„, 데이터λ₯Ό μΆ”κ°€ν•˜λŠ” 방법
- λ”•μ…”λ„ˆλ¦¬λŠ” λ¦¬μŠ€νŠΈκ°€ λ³€κ²½κ°€λŠ₯ν–ˆλ˜ 것 처럼 변경이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
- λΆˆλ³€μ„±(immutable)은 μƒμ„±ν•œ 이후에 κ·Έ λ‚΄μš©μ„ μˆ˜μ •ν•  수 μ—†λ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.
- λ”•μ…”λ„ˆλ¦¬λŠ” λ§Œλ“€μ–΄μ§„ 이후에도 μˆ˜μ •μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.
- pop은 keyλ₯Ό μ§€μš°λŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€.
- μŒλ”°μ˜΄ν‘œ, ν™‘λ”°μ˜΄ν‘œ 2가지 λͺ¨λ‘ μ‚¬μš©ν•©λ‹ˆλ‹€.
- key의 값은 λΆˆλ¦¬μ–Έ, 리슀트, νŠœν”Œ, λ„˜λ²„, 슀트링 λͺ¨λ‘ κ°€λŠ₯ν•©λ‹ˆλ‹€.

λ”•μ…”λ„ˆλ¦¬ μ±Œλ¦°μ§€

user = {
	"name":"john",
    "age":12,
    "alive":True,
    "fav_food":["🍎","πŸ‰"]
}

print(user) ## ==> {"name":"john","age":12,"alive":True,"fav_food":["🍎","πŸ‰"]}

user.clear()
print(user) # ==> {}
print(user.get("age")) # => 12
print(user.get("fav_food")) # => ["🍎","πŸ‰"]

# λ”•μ…”λ„ˆλ¦¬ μ•ˆμ˜ 값을 κ°€μ Έμ˜€λŠ” λ‹€λ₯Έ 방법
print(user["name"]) # => john

# pop(key_value) : keyλ₯Ό μ§€μ›λ‹ˆλ‹€.
user.pop("name")
print(user) # => {"age":12,"alive":True,"fav_food":["🍎","πŸ‰"]}

#key-valueλ₯Ό μΆ”κ°€ν•˜κΈ°
user["xp"] = 1000
print(user) 
# => {"name":"john","age":12,"alive":True,"fav_food":["🍎","πŸ‰"],"xp",1000}

# νŠΉμ • key의 valueλ₯Ό μΆ”κ°€ν•˜κΈ°
user["fav_food"].append("πŸ•")
print(user.get("fav_food") # => ["🍎","πŸ‰","πŸ•"]
print(user["fav_food"]) # => ["🍎","πŸ‰","πŸ•"]
profile
πŸ“Œ FE 곡뢀 정리 κ³΅κ°„μž…λ‹ˆλ‹€.

0개의 λŒ“κΈ€