파이썬 문법 #2

2020. 11. 18. 22:43γ†πŸ“ μ½”λ”© ν…ŒμŠ€νŠΈ/Python

λ°˜μ‘ν˜•

λ¬Έμžμ—΄ μžλ£Œν˜•

- λ¬Έμžμ—΄ λ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™”ν•  λ•ŒλŠ” ν°λ”°μ˜΄ν‘œ(")λ‚˜ μž‘μ€ λ”°μ˜΄ν‘œ(')λ₯Ό μ΄μš©ν•©λ‹ˆλ‹€.

- λ¬Έμžμ—΄ μ•ˆμ— ν°λ”°μ˜΄ν‘œλ‚˜ μž‘μ€λ”°μ˜΄ν‘œκ°€ ν¬ν•¨λ˜μ–΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€.

   - 전체 λ¬Έμžμ—΄μ„ ν°λ”°μ˜΄ν‘œλ‘œ κ΅¬μ„±ν•˜λŠ” 경우, λ‚΄λΆ€μ μœΌλ‘œ μž‘μ€λ”°μ˜΄ν‘œλ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

   - 전체 λ¬Έμžμ—΄μ„ μž‘μ€λ”°μ˜΄ν‘œλ‘œ κ΅¬μ„±ν•˜λŠ” 경우, λ‚΄λΆ€μ μœΌλ‘œ ν°λ”°μ˜΄ν‘œλ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

   - ν˜Ήμ€ λ°±μŠ¬λž˜μ‹œ(\)λ₯Ό μ‚¬μš©ν•˜λ©΄, ν°λ”°μ˜΄ν‘œλ‚˜ μž‘μ€λ”°μ˜΄ν‘œλ₯Ό μ›ν•˜λŠ” 만큼 ν¬ν•¨μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

data = 'Hello World'
print(data) # Hello World

data = "Don't you know \"Python\""
print(data) # Don't you know "Python"?

 

λ¬Έμžμ—΄ μ—°μ‚°

- λ¬Έμžμ—΄ λ³€μˆ˜μ— λ§μ…ˆ(+)을 μ΄μš©ν•˜λ©΄ λ¬Έμžμ—΄μ΄ λ”ν•΄μ Έμ„œ μ—°κ²°(Concatenate)λ©λ‹ˆλ‹€.

- λ¬Έμžμ—΄ λ³€μˆ˜λ₯Ό νŠΉμ •ν•œ μ–‘μ˜ μ •μˆ˜μ™€ κ³±ν•˜λŠ” 경우, λ¬Έμžμ—΄μ΄ κ·Έ κ°’λ§ŒνΌ μ—¬λŸ¬ 번 λ”ν•΄μ§‘λ‹ˆλ‹€.

- νŒŒμ΄μ¬μ€ λ¬Έμžμ—΄μ€ λ‚΄λΆ€μ μœΌλ‘œ νŠœν”Œκ³Ό μœ μ‚¬ν•˜κ²Œ μ²˜λ¦¬λ©λ‹ˆλ‹€.

   - λ¬Έμžμ—΄μ— λŒ€ν•΄μ„œλ„ λ§ˆμ°¬κ°€μ§€λ‘œ 인덱싱과 μŠ¬λΌμ΄μ‹±μ„ μ΄μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

리슀트의 인덱싱과 μŠ¬λΌμ΄μ‹±

a = "Hello"
b = "World"
print(a + " " + b) # Hello World

a = "String"
print(a * 3) # StringStringString

a = "ABCDEF"
print(a[2:4]) # CD

 

νŠœν”Œ μžλ£Œν˜•

- νŠœν”Œ μžλ£Œν˜•μ€ λ¦¬μŠ€νŠΈμ™€ μœ μ‚¬ν•˜μ§€λ§Œ λ‹€μŒκ³Ό 같은 문법적 차이가 μžˆμŠ΅λ‹ˆλ‹€.

   - νŠœν”Œμ€ ν•œ 번 μ„ μ–Έλœ 값을 λ³€κ²½ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

   - λ¦¬μŠ€νŠΈλŠ” λŒ€κ΄„ν˜Έ([])λ₯Ό μ΄μš©ν•˜μ§€λ§Œ, νŠœν”Œμ€ μ†Œκ΄„ν˜Έ(())λ₯Ό μ΄μš©ν•©λ‹ˆλ‹€.

- νŠœν”Œμ€ λ¦¬μŠ€νŠΈμ— λΉ„ν•΄ μƒλŒ€μ μœΌλ‘œ 곡간 νš¨μœ¨μ μž…λ‹ˆλ‹€.

 

사전 μžλ£Œν˜•

- 사전 μžλ£Œν˜•μ€ ν‚€(Key)와 κ°’(Value)의 μŒμ„ λ°μ΄ν„°λ‘œ κ°€μ§€λŠ” μžλ£Œν˜•μž…λ‹ˆλ‹€.

   - μ•žμ„œ λ‹€λ£¨μ—ˆλ˜ λ¦¬μŠ€νŠΈλ‚˜ νŠœν”Œμ΄ 값을 순차적으둜 μ €μž₯ν•˜λŠ” κ²ƒκ³ΌλŠ” λŒ€λΉ„λ©λ‹ˆλ‹€.

- 사전 μžλ£Œν˜•μ€ 킀와 κ°’μ˜ μŒμ„ λ°μ΄ν„°λ‘œ κ°€μ§€λ©°, μ›ν•˜λŠ” 'λ³€κ²½ λΆˆκ°€λŠ₯ν•œ(Immutable) μžλ£Œν˜•'을 ν‚€λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

- 파이썬의 사전 μžλ£Œν˜•μ€ ν•΄μ‹œ ν…Œμ΄λΈ”(Hash Table)을 μ΄μš©ν•˜λ―€λ‘œ λ°μ΄ν„°μ˜ 검색 및 μˆ˜μ •μ— μžˆμ–΄μ„œ O(1)의 μ‹œκ°„μ— μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

data = dict()
data['사과'] = 'Apple'
data['λ°”λ‚˜λ‚˜'] = 'Banana'
data['μ½”μ½”λ„›'] = 'Coconut'

print(data) # {'사과': 'Apple', 'λ°”λ‚˜λ‚˜': 'Banana', 'μ½”μ½”λ„›': 'Coconut'}

if '사과' in data:
	print("'사과'λ₯Ό ν‚€λ‘œ κ°€μ§€λŠ” 데이터가 μ‘΄μž¬ν•©λ‹ˆλ‹€.") # '사과'λ₯Ό ν‚€λ‘œ κ°€μ§€λŠ” 데이터가 μ‘΄μž¬ν•©λ‹ˆλ‹€.

 

사전 μžλ£Œν˜• κ΄€λ ¨ λ©”μ„œλ“œ

- 사전 μžλ£Œν˜•μ—μ„œλŠ” 킀와 값을 λ³„λ„λ‘œ 뽑아내기 μœ„ν•œ λ©”μ„œλ“œ 쑴재

   - ν‚€ λ°μ΄ν„°λ§Œ λ½‘μ•„μ„œ 리슀트둜 μ΄μš©ν•  λ•ŒλŠ” keys() ν•¨μˆ˜λ₯Ό μ΄μš©ν•©λ‹ˆλ‹€.

   - κ°’ λ°μ΄ν„°λ§Œμ„ λ½‘μ•„μ„œ 리슀트둜 μ΄μš©ν•  λ•ŒλŠ” values() ν•¨μˆ˜λ₯Ό μ΄μš©ν•©λ‹ˆλ‹€.

 

사전 μžλ£Œν˜• κ΄€λ ¨ ν•¨μˆ˜

data = dict()
data['사과'] = 'Apple'
data['λ°”λ‚˜λ‚˜'] = 'Banana'
data['μ½”μ½”λ„›'] = 'Coconut'

# ν‚€ λ°μ΄ν„°λ§Œ 담은 리슀트
key_list = data.keys()

# κ°’ λ°μ΄ν„°λ§Œ 담은 리슀트
value_list = data.values()
print(key_list)
print(value_list)

# 각 킀에 λ”°λ₯Έ 값을 ν•˜λ‚˜μ”© 좜λ ₯
for key in key_list:
	print(data[key])

 

μ§‘ν•© μžλ£Œν˜•

- 집합은 λ‹€μŒκ³Ό 같은 νŠΉμ§•μ΄ μžˆμŠ΅λ‹ˆλ‹€.

  - 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

  - μˆœμ„œκ°€ μ—†μŠ΅λ‹ˆλ‹€.

- λ¦¬μŠ€νŠΈλ‚˜ νŠœν”Œμ€ μˆœμ„œκ°€ 있기 λ•Œλ¬Έμ— 인덱싱을 톡해 μžλ£Œν˜•μ˜ 값을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

- 사전 μžλ£Œν˜•κ³Ό μ§‘ν•© μžλ£Œν˜•μ€ μˆœμ„œκ°€ μ—†κΈ° λ•Œλ¬Έμ— μΈλ±μ‹±μœΌλ‘œ 값을 얻을 수 μ—†μŠ΅λ‹ˆλ‹€.

- 집합은 리슀트 ν˜Ήμ€ λ¬Έμžμ—΄μ„ μ΄μš©ν•΄μ„œ μ΄ˆκΈ°ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

   - μ΄λ•Œ set() ν•¨μˆ˜λ₯Ό μ΄μš©ν•©λ‹ˆλ‹€.

- ν˜Ήμ€ μ€‘κ΄„ν˜Έ ({})μ•ˆμ— 각 μ›μ†Œλ₯Ό 콀마(,)λ₯Ό κΈ°μ€€μœΌλ‘œ κ΅¬λΆ„ν•˜μ—¬ μ‚½μž…ν•¨μœΌλ‘œμ¨ μ΄ˆκΈ°ν™” ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

# μ§‘ν•© μžλ£Œν˜• μ΄ˆκΈ°ν™” 방법 1
data = set([1, 1, 2, 3, 4, 4, 5])
print(data) # {1, 2, 3, 4, 5}

# μ§‘ν•© μžλ£Œν˜• μ΄ˆκΈ°ν™” 방법 2
data = {1, 1, 2, 3, 4, 4, 5}
print(data) # {1, 2, 3, 4, 5}

 

μ§‘ν•© μžλ£Œν˜•μ˜ μ—°μ‚°

a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])

# ν•©μ§‘ν•©
print(a | b) # {1, 2, 3, 4, 5, 6, 7}

# ꡐ집합
print(a & b) # {3, 4, 5}

# μ°¨μ§‘ν•©
print(a - b) # {1, 2}
data = set([1, 2, 3])
print(data) # {1, 2, 3}

# μƒˆλ‘œμš΄ μ›μ†Œ μΆ”κ°€
data.add(4)
print(data) # {1, 2, 3, 4}

# μƒˆλ‘œμš΄ μ›μ†Œ μ—¬λŸ¬ 개 μΆ”κ°€
data.update([5, 6])
print(data) {1, 2, 3, 4, 5, 6}

# νŠΉμ •ν•œ 값을 κ°–λŠ” μ›μ†Œ μ‚­μ œ
data.remove(3)
print(data) # {1, 2, 4, 5, 6}
λ°˜μ‘ν˜•