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

[2νŒ€/κΉ€μ„Έμ—°] 7μ°¨μ‹œ 파이썬 μŠ€ν„°λ”” - 자료ꡬ쑰

μ•Œ 수 μ—†λŠ” μ‚¬μš©μž 2023. 5. 11. 09:44

7μ°¨μ‹œ_자료ꡬ쑰_κ°•μ˜μ•ˆ.pdf
1.16MB
7μ°¨μ‹œ_자료ꡬ쑰_과제.pdf
0.15MB

디솝 - 7μ£Όμ°¨ 자료ꡬ쑰

자료ꡬ쑰

: λ°μ΄ν„°μ˜ νŠΉμ§•μ„ κ³ λ €ν•˜μ—¬ μ €μž₯ν•˜λŠ” 방법

νŠΉμ§•μ΄ μžˆλŠ” 정보λ₯Ό λ©”λͺ¨λ¦¬μ— 효율적으둜 μ €μž₯ 및 λ°˜ν™˜ν•˜λŠ” λ°©λ²•μœΌλ‘œ 데이터λ₯Ό κ΄€λ¦¬ν•˜λŠ” 방식

특히 λŒ€μš©λŸ‰μΌμˆ˜λ‘ λ©”λͺ¨λ¦¬μ— 빨리 μ €μž₯ν•˜κ³  κ²€μƒ‰ν•¨μœΌλ‘œμ¨ λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 μ‚¬μš©ν•΄μ•Ό μ‹€ν–‰ μ‹œκ°„μ„ 쀄일 수 있음

  • νŒŒμ΄μ¬μ—μ„œμ˜ 자료ꡬ쑰

 

 

  • μŠ€νƒκ³Ό 큐
    -μŠ€νƒ
    :Last In First Out
    > κ°€μž₯ λ§ˆμ§€λ§‰μ— λ“€μ–΄κ°„ 데이터가 κ°€μž₯ λ¨Όμ € λ‚˜μ˜€λŠ” ν˜•νƒœλ‘œ λ°μ΄ν„°μ˜ μ €μž₯ 곡간을 κ΅¬ν˜„


ex) νƒλ°°μˆ˜ν•˜λ¬Όμ„ μ €μž₯ν•˜λŠ” 방식, νŒ¬μΌ€μ΄ν¬ 먹을 λ•Œ ( ν•œ λ°©ν–₯만 뚫린 ν˜•νƒœ )
μˆ˜ν™”λ¬Όμ„ ν•˜λ‚˜μ˜ λ°μ΄ν„°λ‘œ λ³Έλ‹€λ©΄ λ¨Όμ € λ“€μ–΄κ°„ μˆ˜ν™”λ¬Όλ³΄λ‹€ λ‚˜μ€‘μ— λ“€μ–΄κ°„ μˆ˜ν™”λ¬Όμ΄ λ¨Όμ € λ‚˜μ™€μ•Ό ν•˜λŠ” κ²½μš°μž„ 

>μˆ˜ν™”λ¬Όκ³Ό λΉ„μŠ·ν•œ κ°œλ…μ˜ 데이터가 μžˆλ‹€λ©΄ μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ μ €μž₯ν–ˆμ„ λ•Œ μ’€ 더 μ‰½κ²Œ 데이터λ₯Ό μΆ”μΆœν•  수 μžˆλ‹€

a = [1, 2, 3, 4, 5]
a.append(10)
print(a)
[1, 2, 3, 4, 5, 10]

a.append(20)
print(a)
[1, 2, 3, 4, 5, 10, 20]

#pop은 κ°€μž₯ λ§ˆμ§€λ§‰μ— μ €μž₯된 것이 μΆ”μΆœ, λ™μ‹œμ— λ³€μˆ˜λŠ” ν•΄λ‹Ή 데이터 μ‚­μ œ
a.pop()
20

a.pop()
10

>μ΄μ§„μˆ˜ λ³€ν™˜κΈ°μ™€ ν…μŠ€νŠΈ μ—­μˆœμœΌλ‘œ μΆ”μΆœν•˜λŠ” ν”„λ‘œκ·Έλž¨μ— ν™œμš©

-μ΄μ§„μˆ˜ λ³€ν™˜κΈ°: 2둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€κ°’μ„ μŠ€νƒμ— ν‘Έμ‹œν•œ ν›„ λ§ˆμ§€λ§‰μœΌλ‘œ λ“€μ–΄μ˜¨ κ°’λΆ€ν„° 팝으둜 μΆ”μΆœ, 좜λ ₯

 

 

-큐

:μŠ€νƒμ˜ λ°˜λŒ€ κ°œλ…μœΌλ‘œ ‘First in First Out’의 λ©”λͺ¨λ¦¬ μžλ£Œκ΅¬μ‘°μž„

ex) μ€ν–‰μ—μ„œ λŒ€κΈ° λ²ˆν˜Έν‘œ,μ„ μž…μ„ μΆœ

λ¨Όμ € 온 μ‚¬λžŒμ΄ μ•žμ˜ λ²ˆν˜Έν‘œλ₯Ό 뽑고. λ²ˆν˜Έκ°€ λΉ  λ₯Έ μ‚¬λžŒμ΄ λ¨Όμ € μ„œλΉ„μŠ€λ₯Ό λ°›λŠ” κ΅¬μ‘°μž„

 

λ©”λͺ¨λ¦¬ κ°œλ…μœΌλ‘œ λ³Ό λ•Œ νλŠ” μŠ€νƒλ³΄λ‹€ κ΅¬ν˜„μ΄ 쑰금 더 λ³΅μž‘ν•¨

μŠ€νƒμ€ λ©”λͺ¨λ¦¬κ°€ μ‹œμž‘ν•˜λŠ” 지점이 κ³ μ •λ˜μ–΄ μžˆμ§€λ§Œ, νλŠ” μ²˜μŒμ— 값이 μ €μž₯λ˜λŠ” λ©”λͺ¨λ¦¬ μ£Όμ†Œκ°€ 값이 μ‚¬μš©λ¨μ— 따라 계속 λ°”λ€Œκ²Œ λ˜μ–΄ κ΅¬ν˜„μ— μ’€ 더 μ‹ κ²½ 을 써야 함

νŒŒμ΄μ¬μ—μ„œλŠ” μ΄λŸ¬ν•œ 뢀뢄이 μžλ™μœΌλ‘œ κ΅¬ν˜„λ˜λ―€λ‘œ 어렡지 μ•Šκ²Œ μ‚¬μš©ν•  수 있음

 

  • νŠœν”Œκ³Ό μ„ΈνŠΈ

-νˆ¬ν”Œ

:λ¦¬μŠ€νŠΈμ™€ 같은 κ°œλ…μ΄μ§€ 만 값을 λ³€κ²½ν•˜λŠ” 것이 λΆˆκ°€λŠ₯ν•œ 리슀트

t = (1, 2, 3) #νˆ¬ν”Œ μ„ μ–Έ 

print(t +t , t * 2) #νˆ¬ν”Œκ°„μ˜ μ—°μ‚°,인덱싱,μŠ¬λΌμ΄μ‹±, νˆ¬ν”Œ κ°„μ˜ λ§μ…ˆ,κ³±μ…‰ κ°€λŠ₯
(1, 2, 3, 1, 2, 3) (1, 2, 3, 1, 2, 3)

len(t)
3

λ§Œμ•½ νŠœν”Œμ˜ 값을 λ³€κ²½ν•˜ 고자 ν•œλ‹€λ©΄ λ‹€μŒκ³Ό 같이 였λ₯˜κ°€ λ°œμƒν•¨

t[l] =5

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ’tuple' object does not support item assignment

>‘νŠœν”Œ 였브젝트(‘tuple’ object)μ—λŠ” μƒˆλ‘œμš΄ μ•„μ΄ν…œ(item)의 ν•  당을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.’λΌλŠ” λ‚΄μš©μ΄λ‹€. νŠœν”Œμ˜ κ°€μž₯ 큰 νŠΉμ§•μž„

 

>ν•™λ²ˆμ΄λ‚˜ 이름, μ£Όλ―Όλ“±λ‘λ²ˆν˜Έμ™€ 같이 λ³€κ²½λ˜λ©΄ μ•ˆ λ˜λŠ” 정보 ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ΄λŸ¬ν•œ 이해 없이 λ§ˆμŒλŒ€λ‘œ 값을 λ³€κ²½ν•˜λ €κ³  ν• λ•Œ νŠœν”Œμ€ 이λ₯Ό λ°©μ§€ν•΄μ£ΌλŠ” μ—­ν• μž„

 

-μ„ΈνŠΈ

:μˆœμ„œ 없이 μ €μž₯ν•˜λ˜ 쀑볡을 λΆˆν—ˆν•˜λŠ” μžλ£Œν˜•

(μˆ˜ν•™μ˜ 집합과 κ°œλ…μ μœΌλ‘œ λΉ„μŠ·)

ex)λ¬Έμ„œ ν•˜λ‚˜μ— λ“€μ–΄κ°€ μžˆλŠ” 단어 μ’…λ₯˜μ˜ 개수λ₯Ό μ…€ λ•Œ λͺ¨λ“  단어λ₯Ό μΆ”μΆœν•œ ν›„ μ„ΈνŠΈλ‘œ λ³€ν™˜ ν•˜λ©΄ 단어 μ’…λ₯˜μ˜ 개수λ₯Ό μ‰½κ²Œ νŒŒμ•…

s = set([l, 2, 3, 1, 2, 3]) # set() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 1, 2, 3을 μ„ΈνŠΈ 객체둜 생성
s
{1, 2, 3}

μ„ΈνŠΈλŠ” νŠœν”Œκ³Ό λ‹€λ₯΄κ²Œ μ‚­μ œλ‚˜ 변경이 κ°€λŠ₯

 

s
{1, 2, 3}

s.add(l) # 1을 μΆ”κ°€ν•˜λŠ” λͺ…λ Ήμ΄μ§€λ§Œ 쀑볡 λΆˆν—ˆλ‘œ μΆ”κ°€λ˜μ§€ μ•ŠμŒ
print(s)
{1, 2, 3}

s.remove(1) # 1 μ‚­μ œ
print(s)
{2, 3}

s.update([l, 4, 5, 6, 7]) # [1, 4, 5, 6, 7] μΆ”κ°€
print(s)
{1, 2, 3, 4, 5, 6, 7}

s.discard(3) #3 μ‚­μ œ
print(s)
{1, 2, 4, 5, 6, 7}

s.clear() # λͺ¨λ“  μ›μ†Œ μ‚­μ œ
print(s)
set()

μ›μ†Œ ν•˜λ‚˜λ₯Ό μΆ”κ°€ν•˜λŠ” add(), μ›μ†Œ ν•˜λ‚˜λ₯Ό μ œκ±°ν•˜λŠ” remove()λ˜λŠ” discard(), μƒˆλ‘œμš΄ 리슀트λ₯Ό κ·ΈλŒ€λ‘œ μΆ”κ°€ν•˜λŠ” update(), λͺ¨λ“  λ³€μˆ˜λ₯Ό μ§€μš°λŠ” clear()등이 있음

값은 λͺ¨λ‘ μˆœμ„œ 없이 μ €μž₯λ˜λŠ” λ™μ‹œμ— 쀑볡을 μ œκ±°ν•˜κ³  μ €μž₯함.

 

s1 =set([l, 2, 3, 4, 5])
s2 =set([3, 4, 5, 6 ,7])

s1.union(s2) # siκ³Ό s2의 합집합
{1, 2, 3, 4, 5, 6, 7}
s1 | s2 #set([l, 2, 3, 4, 5, 6, 7])
{1, 2, 3, 4, 5, 6, 7}

s1.intersection(s2) # s1κ³Ό s2의 ꡐ집합
{3, 4, 5}
s1 & s2 #set([3, 4, 5])
{3, 4, 5}

s1.difference(s2) # s1κ³Ό s2의 차집합
{1, 2}
s1 - s2 # set([1, 2])
{1, 2}

 

-λ”•μ…”λ„ˆλ¦¬

:νŒŒμ΄μ¬μ—μ„œ κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” 자료ꡬ쑰둜 λ°μ΄ν„°μ˜ μœ μΌν•œ κ΅¬λΆ„μžμΈ ν‚€ keyλΌλŠ” μ΄λ¦„μœΌλ‘œ 검색할 수 있게 ν•˜κ³  μ‹€μ œ 데이터λ₯Ό κ°’valueκ°€ 있음

ex)μ£Όλ―Όλ“±λ‘λ²ˆν˜Έλ‚˜ ν•™κ΅μ˜ ν•™λ²ˆ. μ œν’ˆ 번호 등은 λͺ¨λ‘ ν•˜λ‚˜μ˜ 데이터λ₯Ό ꡬ뢄

 

-νŒŒμ΄μ¬μ—μ„œμ˜ λ”•μ…”λ„ˆλ¦¬

πŸ’‘ λ”•μ…”λ„ˆλ¦¬ λ³€μˆ˜ = {ν‚€ 1οΌšκ°’ 1, ν‚€ 2:κ°’ 2, ν‚€ 3:κ°’ 3, …}

 

λ‹€μ–‘ν•œ μžλ£Œν˜•μ΄ λ“€μ–΄κ°ˆ 수 있음

λ¦¬μŠ€νŠΈμ™€ 같이 ν•œ λ²ˆμ— μ—¬λŸ¬ 데이터λ₯Ό μž…λ ₯ν•œλ‹€κ±°λ‚˜,νŠœν”Œ λ˜λŠ” μ„ΈνŠΈμ™€ 같은 데이터도 μ‚¬μš©ν•  수 있음 심지어 λ”•μ…”λ„ˆλ¦¬λ₯Ό μ‚¬μš©ν•  μˆ˜λ„ 있음

 

student_info = {20140012:'Sungchul',20140059:'Jiyong', 20140058:’Jaehong'}

-ν•΄λ‹Ή λ³€μˆ˜μ—μ„œ νŠΉμ •κ°’μ„ ν˜ΈμΆœν•˜λŠ” 법

student_infoοΌ»20140012οΌ½
'Sungchul

 

-μž¬ν• λ‹Ήκ³Ό 데이터 μΆ”κ°€

student_info[20140012]= 'Sungchul'
student_info[20140012]
'Sungchul'

student_info[20140039]= 'Wonchul'

student_info
{20140012: 'Sungchul', 20140059: 'Jiyong', 20140058: 'Jaehong', 20140039: 'Wonchul'}

 

-λ”•μ…”λ„ˆλ¦¬ ν•¨μˆ˜

:νŒŒμ΄μ¬μ—μ„œλŠ” λ”•μ…”λ„ˆλ¦¬λ₯Ό μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ‹€μ–‘ν•œ ν•¨μˆ˜λ₯Ό μ œκ³΅ν•¨ 특히 forλ¬Έμ΄λ‚˜ ifλ¬Έκ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ λ‹€μ–‘ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 있음

 

country_code = {} # λ”•μ…”λ„ˆλ¦¬ 생성
country_code = {"America": 1, "Korea": 82, "China": 86, "Japan": 81}

print(country_code)
{'America': 1, 'Korea': 82, 'China': 86, 'Japan': 81}

 

-keys() ν•¨μˆ˜ : ν‚€λ§Œ 좜λ ₯ν•˜κΈ° μœ„ν•¨

print(country_code.keys()) # λ”•μ‹œλ„ˆλ¦¬μ˜ ν‚€λ§Œ 좜λ ₯
dict_keys(['America' 'Korea', 'China', 'Japan'])

 

-values() ν•¨μˆ˜ : 값을 좜λ ₯ν•˜κΈ°

country_code["German"] = 49 # λ”•μ…”λ„ˆλ¦¬ μΆ”κ°€
print(country_code)
{'America': 1, 'Korea': 82, 'China': 86, 'Japan': 81, 'German': 49}

print(country_code.values()) # λ”•μ…”λ„ˆλ¦¬μ˜ κ°’λ§Œ 좜λ ₯
dict_values([l, 82, 86, 81, 49])

 

-items() ν•¨μˆ˜ :ν‚€-κ°’ μŒμ„ 좜λ ₯ν•˜κΈ°

print(country_code.items()) # λ”•μ…”λ„ˆλ¦¬ 데이터 좜λ ₯
dict_items([('America',1), ('Korea', 82), ('China', 86), ('Japan', 81), ('German', 49)])