
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ๋ฌผ๊ฑด์ ์ ๋ฆฌํ ๋ ์์์ ๋ด๊ณ , ์ฑ ์ ์ ๋ฆฌํ ๋ ์ฑ ์ฅ์ ๊ฝ์๋๋ ๊ฒ์ฒ๋ผ ํ์ด์ฌ๋ ์ซ์๋ ๊ธ์ ๊ฐ์ ๋ฐ์ดํฐ๋ค์ ๋ด์๋๋ ๊ณต๊ฐ์ด ํ์ํฉ๋๋ค. ์ด๋ฐ ํด๋น ๊ณต๊ฐ์ '์๋ฃ๊ตฌ์กฐ(Data Stucture)'๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ํ์ด์ฌ์๋ ์ฌ๋ฌ ๊ฐ์ง ๊ณต๊ฐ์ด ์์ง๋ง, ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๊ณ ๊ธฐ๋ณธ์ด ๋๋ ๋ฆฌ์คํธ(List), ํํ(Tuple). ๋์ ๋๋ฆฌ(Dictionary) 3๊ฐ์ง์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
๋ฆฌ์คํธ(List)
๋ฆฌ์คํธ๋ '์ฌ๋ฌ ๋ฌผ๊ฑด์ ์์๋๋ก ๋์ด๋์ ์ฅ๋๊ฐ ๊ธฐ์ฐจ'์ ๊ฐ์ต๋๋ค. ๋๊ดํธ๋ฅผ ์ฌ์ฉํด์ ๋ง๋ค๊ณ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ง์๊ป ์ถ๊ฐํ๊ฑฐ๋ ๋นผ๊ฑฐ๋, ์์๋ฅผ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
1๏ธโฃ ๋ฆฌ์คํธ ์์ฑ
- ์์๊ฐ ์์ : ์์(Element)๋ค์ ์์น๊ฐ ์ ํด์ ธ ์์ด index(์์น ๋ฒํธ)๋ก ์ ๊ทผํ ์ ์์ต๋๋ค.
- ์์ ๊ฐ๋ฅ : ๊ฐ์ ์ถ๊ฐ, ์์ , ์ญ์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ์ค๋ณต ํ์ฉ : ๋์ผํ ๊ฐ์ด ์ฌ๋ฌ ๋ฒ ๋ค์ด๊ฐ ์ ์์ต๋๋ค.
- ๋ค์ํ ์๋ฃํ ๋ด๊ธฐ ๊ฐ๋ฅ : ์ซ์, ๋ฌธ์์ด, ๋ฆฌ์คํธ ๋ฑ ๋ค์ํ ์๋ฃํ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ์์ต๋๋ค.
# ๋น ๋ฆฌ์คํธ
empty_list = []
# ์ซ์์ ๋ฌธ์์ด
numbers = [1,2,3,4,5]
fruits = ["์ฌ๊ณผ", "๋ฐ๋๋", "์ฒด๋ฆฌ"]
# ํผํฉ
mixed = [1,2,"Hello",3.14, True, [1,2,3], ["์ฌ๊ณผ", "๋ฐ๋๋"]]
2๏ธโฃ ๋ฆฌ์คํธ ์ธ๋ฑ์ฑ๊ณผ ์ฌ๋ผ์ด์ฑ
์์น ๋ฒํธ๋ฅผ ์ฌ์ฉํด ์ํ๋ ์์๋ง ๊ฐ์ ธ์ฌ ์ ์๊ณ , ํน์ ๋ฒ์๋ฅผ ์ฃผ์ด ์๋ผ๋ผ ์ ์๋ค.
์ธ๋ฑ์ฑ ์์
nums = [10,20,30,40,50]
print(nums) # [10, 20, 30, 40, 50]
print(nums[0]) # 10
print(nums[-1]) # 50
mixs = [1,2,True,"Hello",['a','b','c']]
mixs[2] # True
print(mixs[0]) # 1
mixs[-1] # ['a','b','c']
# ๋ฆฌ์คํธ์ ๋ฆฌ์คํธ๋ฅผ ๋ฃ์ ๊ฒฝ์ฐ๋ผ๋ฉด ๊ฐ์ฅ ๋จผ์ index 4๋ฒ์งธ์ ์๋ ๋ฆฌ์คํธ(['a','b','c'])๋ฅผ ๊บผ๋ด๊ณ
# ๊บผ๋ด์ง ๋ฆฌ์คํธ์ index 1๋ฒ์งธ๋ฅผ ๊บผ๋ธ๋ค.
print(mixs[-1][1]) # b
์ฌ๋ผ์ด์ฑ ์์
mixs = [1,2,True,"Hello",['a','b','c']]
mixs[0:2] # [1, 2]
mixs[-1:] # [['a', 'b', 'c']]
mixs[-3:] # [True, 'Hello', ['a', 'b', 'c']]
mixs[:3] # [1, 2, True]
mixs[4][:2] # ['a', 'b']
3๏ธโฃ ๋ฆฌ์คํธ ์ฐ์ฐ
ํ์ด์ฌ ๋ฆฌ์คํธ์์ ์ฐ์ ์ฐ์ฐ์๋ ์ํ์ ๊ณ์ฐ์ด ์๋๋ผ '์ฐ๊ฒฐ'๊ณผ '๋ฐ๋ณต'์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋๋ค.
๋ฆฌ์คํธ ๋ํ๊ธฐ(+)
๋ ๊ฐ ์ด์์ ๋ฆฌ์คํธ๋ฅผ ํ๋๋ก ์ด์ด ๋ถ์ ๋๋ค. ์๋ ๋ฆฌ์คํธ๋ ๋ณ๊ฒฝ๋์ง ์๊ณ ์๋ก์ด ๋ฆฌ์คํธ๊ฐ ์์ฑ๋ฉ๋๋ค.
a = [1,2,3]
b = [4,5]
result = a + b
print(result) # [1, 2, 3, 4, 5]
# ์ฐธ๊ณ (ํ์ฅ ์ฐ์ฐ์ +=)
c = ['p','y','t']
d = ['h','o','n']
c += d
print(c) # ['p', 'y', 't', 'h', 'o', 'n']
'c += d'๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ก์ด ๋ฆฌ์คํธ c๊ฐ ๋ง๋ค์ด์ง์ง ์๊ณ ๊ธฐ์กด ๋ฆฌ์คํธ c ์์ฒด๋ฅผ ์์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ ์ ์์ต๋๋ค.
๋ฆฌ์คํธ ๊ณฑํ๊ธฐ(*)
๋ฆฌ์คํธ์ ์์๋ฅผ ์ง์ ํ ์ซ์๋งํผ ๋ฐ๋ณตํ์ฌ ๋ณต์ฌํฉ๋๋ค.
a = [0,1]
result = a * 5
print(result) # [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
zero_list = [0] * 5
# ํน์ ๊ธธ์ด์ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํ ํ ๋ ์์ฃผ ์ฌ์ฉ
print(zero_list) # [0, 0, 0, 0, 0]
new_list = [result[1]] * 5
print(new_list) # [1, 1, 1, 1, 1]
๋ฆฌ์คํธ ๊ธธ์ด ๊ตฌํ๊ธฐ
๋ฆฌ์คํธ ๊ธธ์ด๋ฅผ ๊ตฌํ๊ธฐ ์ํด์๋ len ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
a = [1,2,3,4,5]
len(a) # 5
4๏ธโฃ ๋ฆฌ์คํธ ์์ ๊ณผ ์ญ์
๋ฆฌ์คํธ์ ์์ (update)๊ณผ ์ญ์ (delete)๋ ๋ฆฌ์คํธ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ค๋ฃฐ ๋ ๊ฐ์ฅ ๋น๋ฒํ๊ฒ ์ฌ์ฉํ๋ ์์ ์ ๋๋ค.
๋ฆฌ์คํธ ์์ (Midification)
๋ฆฌ์คํธ๋ ์์ ๊ฐ๋ฅํ ์๋ฃํ์ด๋ฏ๋ก, ๊ธฐ์กด ์์น์ ๊ฐ์ ์๋ก์ด ๊ฐ์ผ๋ก ๋ฎ์ด์ธ ์ ์์ต๋๋ค.
fruits = ["์ฌ๊ณผ", "๋ฐ๋๋", "ํค์", "์ฒด๋ฆฌ"]
print(fruits) # ['์ฌ๊ณผ', '๋ฐ๋๋', 'ํค์', '์ฒด๋ฆฌ']
# index 1๋ฒ์ ๊ฐ(๋ฐ๋๋)์ ๋ง๊ณ ๋ก ์์
fruits[1] = "๋ง๊ณ "
print(fruits) # ['์ฌ๊ณผ', '๋ง๊ณ ', 'ํค์', '์ฒด๋ฆฌ']
# ์์ ์ธํ
์ค๋ ๊ฐ๋ฅ
fruits[-1] = "์๋ฐ"
print(fruits) # ['์ฌ๊ณผ', '๋ง๊ณ ', 'ํค์', '์๋ฐ']
# ์ฌ๋ฌ ์์ ํ ๋ฒ์ ์์
numbers = [10,20,30,40,50]
numbers[1:3] = [200,300]
print(numbers) # [10, 200, 300, 40, 50]
numbers[1:4] = [99]
print(numbers) # [10, 99, 50]
numbers[1:4] = [99] * 5
print(numbers) # [10, 99, 99, 99, 99, 99]
๋ฆฌ์คํธ ์ญ์ (Deletion)
์ญ์ ๋ ์ธ๋ฑ์ค๋ก ์ญ์ , ๊ฐ์ผ๋ก ์ญ์ , ์ ์ฒด ๋น์ฐ๊ธฐ ๋ฑ ๋ชฉ์ ์ ๋ฐ๋ผ ๋ฐฉ์์ด ๋๋ฉ๋๋ค.
- del ํค์๋ : ์ธ๋ฑ์ค๋ ๋ฒ์๋ก ์ญ์
- .pop() ๋ฉ์๋ : ์ง์ ํ ์ธ๋ฑ์ค์ ์์๋ฅผ ์ญ์ ํจ(๊บผ๋ด๊ธฐ)๊ณผ ๋์์ ๊ทธ ๊ฐ์ ๋ฐํ
- .remove() ๋ฉ์๋ : ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฐ์ผ๋ก ์ญ์ (์ฌ๋ฌ ๊ฐ์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ, ์ฒซ ๋ฒ์งธ๋ก ๋ฐ๊ฒฌ๋ ๊ฐ๋ง ์ญ์ )
- .clear() ๋ฉ์๋ : ๋ฆฌ์คํธ ์์ ๋ชจ๋ ์์๋ฅผ ์ง์ฐ๊ณ ๋น ๋ฆฌ์คํธ ๋ง๋ฆ
# del ํค์๋(์ธ๋ฑ์ค๋ ๋ฒ์๋ก ์ญ์ )
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
colors = ["red","green","blue","yellow","black"]
# ํน์ ์์น 1๊ฐ ์ญ์
del colors[1]
print(colors) # ['red', 'blue', 'yellow', 'black']
# ๋ฒ์๋ก ์ฌ๋ฌ ๊ฐ ์ญ์
del colors[1:3]
print(colors) # ['red', 'black']
# .pop() ๋ฉ์๋
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
menu = ["๊น๋ฐฅ","ํผ์","์นํจ","ํ๋ฒ๊ฑฐ","ํ","์กฑ๋ฐ"]
# ์ธ๋ฑ์ค๋ฅผ ์ ์ง ์์ผ๋ฉด '๋งจ ๋ง์ง๋ง' ์์๋ฅผ ๊บผ๋ธ๋ค.
get_item = menu.pop()
print(get_item) # ์กฑ๋ฐ
print(menu) # ['๊น๋ฐฅ', 'ํผ์', '์นํจ', 'ํ๋ฒ๊ฑฐ', 'ํ']
# ์ธ๋ฑ์ค๋ฅผ ์ง์ ํ์ฌ ๊บผ๋ด๊ธฐ
first_item = menu.pop(0)
print(first_item) # ๊น๋ฐฅ
print(menu) # ['ํผ์', '์นํจ', 'ํ๋ฒ๊ฑฐ', 'ํ']
# .remove() ๋ฉ์๋
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
animals = ["dog","cat","bird","cat"]
# ์ฒซ๋ฒ์งธ cat ๋ฐ์ดํฐ๋ง ์ฐพ์ ์ญ์
animals.remove("cat")
print(animals) # ['dog', 'bird', 'cat']
# .clear() ๋ฉ์๋
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
colors.clear()
menu.clear()
animals.clear()
print(colors) # []
print(menu) # []
print(animals) # []
๐ ์ค๋ณต๋ ๊ฐ์ ๋ชจ๋ ์ง์ฐ๋ ค๋ฉด?
remove() ๋ฉ์๋๋ ์ฒซ ๋ฒ์งธ ๊ฐ๋ง ์ง์์ฃผ๋ฏ๋ก, ๋ฆฌ์คํธ ์์ ํน์ ๊ฐ์ ๋ชจ๋ ์ง์ฐ๊ณ ์ถ์ ๋๋ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ด๋ while๋ฌธ์ ํ์ฉํฉ๋๋ค.
numbers = [1, 2, 3, 2, 4, 2, 5]
# ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
: 2๊ฐ ์๋ ๊ฒ๋ค๋ง ๊ณจ๋ผ ์๋ก ๋ง๋ค๊ธฐ
numbers = [x for x in numbers if x != 2]
print(numbers) # [1, 3, 4, 5]
5๏ธโฃ ๋ฆฌ์คํธ ์ฃผ์ ํจ์
- append(x) ๋ฉ์๋
๋ฆฌ์คํธ์ ๋งจ ๋ค์ ์์ x๋ฅผ 1๊ฐ ์ถ๊ฐํฉ๋๋ค.
fruits = ["์ฌ๊ณผ", "๋ฐ๋๋"]
fruits.append("์ฒด๋ฆฌ")
print(fruits) # ['์ฌ๊ณผ', '๋ฐ๋๋', '์ฒด๋ฆฌ']
- insert(i, x) ๋ฉ์๋
์ง์ ํ ์ธ๋ฑ์ค i ์์น์ ์์ x๋ฅผ ์ฝ์ ํฉ๋๋ค.
numbers = [1,3,4]
numbers.insert(1, 2) # index 1๋ฒ์ ๊ฐ2 ์ฝ์
print(numbers) # [1, 2, 3, 4]
- extend(iterable) ๋ฉ์๋
๋ฆฌ์คํธ ๋์ ๋ค๋ฅธ ๋ฆฌ์คํธ๋ ํํ ๋ฑ ์ฌ๋ฌ ๊ฐ์ ์์๋ฅผ ํ ๋ฒ์ ๋ง๋ถ์ฌ ์ฐ์ฅํฉ๋๋ค.
a = [1,2]
a.extend([3,4])
print(a) # [1, 2, 3, 4]
- remove(x) ๋ฉ์๋
๋ฆฌ์คํธ์์ ๊ฐ์ด x์ธ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ฐพ์ ์ญ์ ํฉ๋๋ค.
colors = ["red","green","blue","yellow","black"]
colors.remove("green")
print(colors) # ['red', 'blue', 'yellow', 'black']
- pop([i]) ๋ฉ์๋
์ง์ ํ ์ธ๋ฑ์ค i ์์น์ ์์๋ฅผ ์ญ์ ํ๋ฉด์ ๊ทธ ๊ฐ์ ๋ฐํํฉ๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์๋ต ์, ๋งจ ๋ง์ง๋ง ์์๋ฅผ ๊บผ๋ ๋๋ค.
stack = [10,20,30]
val = stack.pop() # ๋งจ ๋ค 30์ ๊บผ๋ธ๋ค
print(val) # 30
print(stack) # [10,20]
- clear() ๋ฉ์๋
๋ฆฌ์คํธ ๋ด๋ถ์ ๋ชจ๋ ์์๋ฅผ ์ญ์ ํ์ฌ ๋น ๋ฆฌ์คํธ []๋ก ๋ง๋ญ๋๋ค.
data = [1,2,3]
data.clear()
print(data) # []
- del ์ฐ์ฐ์
ํ์ด์ฌ ํค์๋๋ก, ์ธ๋ฑ์ค๋ ์ฌ๋ผ์ด์ฑ ๋ฒ์๋ฅผ ์ง์ ํด ๋ฉ๋ชจ๋ฆฌ์์ ์ญ์ ํฉ๋๋ค.
nums = [10,20,30,40,50]
del nums[1] # 1๋ฒ ์ธ๋ฑ์ค(20) ์ญ์ -> [10,30,40,50]
del nums[1:3] # 1๋ฒ~2๋ฒ ์ธ๋ฑ์ค ๋ฒ์ ์ญ์
print(nums) # [10, 50]
- sort() ๋ฉ์๋
๋ฆฌ์คํธ์ ์์๋ค์ ์ค๋ฆ์ฐจ์(๊ธฐ๋ณธ๊ฐ) ๋๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํฉ๋๋ค.
numbers = [3,1,4,2,6,5]
numbers.sort() # ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
print(numbers) # [1, 2, 3, 4, 5, 6]
numbers.sort(reverse=True) # ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
print(numbers) # [6, 5, 4, 3, 2, 1]
- reverse() ๋งค์๋
์ ๋ ฌ์ ํ์ง ์๊ณ , ๋จ์ํ ํ์ฌ ๋ฆฌ์คํธ์ ์์๋ฅผ ๋ค์ง์ต๋๋ค.
letters = ["a","c","b"]
letters.reverse()
print(letters) # ['b', 'c', 'a']
- index(x) ๋ฉ์๋
๋ฆฌ์คํธ์์ ๊ฐ x๊ฐ ์์นํ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ๋ฐํํฉ๋๋ค.
items = ["A","B","C","B"]
print(items.index("B")) # 1 (์ฒซ ๋ฒ์งธ 'B'์ ์์น)
- count() ๋ฉ์๋
๋ฆฌ์คํธ ์์ ๊ฐ x๊ฐ ๋ช ๊ฐ ํฌํจ๋์ด ์๋์ง ๊ฐ์๋ฅผ ๋ฐํํฉ๋๋ค.
scores = [100,90,100,86,99,67,100]
print(scores.count(100)) # 3
- len(iterable) ๋ฉ์๋
๋ฆฌ์คํธ์ ์ ์ฒด ์์ ๊ฐ์๋ฅผ ๊ตฌํฉ๋๋ค.
arr = [10,20,30,40,50,60,70,80,100]
print(len(arr)) # 9
- copy() ๋ฉ์๋
๋ฆฌ์คํธ์ ์์ ๋ณต์ฌ๋ณธ(์๋ก์ด ๊ฐ์ฒด)์ ๋ง๋ค์ด ๋ฐํํฉ๋๋ค. ์๋ณธ๊ณผ ๋ณ๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค.
original = [1,2,3]
copied = original.copy() # ๋๋ original[:]
copied.append(4)
print(original) # [1, 2, 3]
print(copied) # [1, 2, 3, 4]
ํํ(Tuple)
ํํ์ ์ฌ๋ฌ ๊ฐ์ ์์๋ฅผ ํ๋๋ก ๋ฌถ์ด์ ๊ด๋ฆฌํ ์ ์๋ ์๋ฃํ์ผ๋ก ๋ฆฌ์คํธ์ ๋งค์ฐ ์ ์ฌํ์ง๋ง, ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ "ํ ๋ฒ ์์ฑ๋๋ฉด ์์๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค."๋ ์ ์ ๋๋ค.
1๏ธโฃ ํํ ์์ฑ
ํํ์ ์๊ดํธ๋ฅผ ์ฌ์ฉํด ์์ฑํ๋ฉฐ, ๊ฐ ์์๋ ์ผํ๋ก ๊ตฌ๋ถํฉ๋๋ค. ์๊ดํธ๋ฅผ ์๋ตํด๋ ์ผํ๋ง ์์ผ๋ฉด ํํ๋ก ์ธ์๋ฉ๋๋ค. ํ์ง๋ง ๋จ์ผ ์์(์์ 1๊ฐ)๋ง ์์ ๋๋ ๋ฐ๋์ ๋ค์ ์ผํ๋ฅผ ๊ผญ ๋ถ์ฌ์ผ ํฉ๋๋ค. (์ผํ๊ฐ ์์ผ๋ฉด ์ผ๋ฐ ๊ดํธ ์ฐ์ฐ์ผ๋ก ์ธ์ํ์ฌ ์ซ์๋ ๋ฌธ์์ด ํ์ ์ด ๋ฉ๋๋ค.)
empty_tuple = ()
t1 = (1,2,3)
t2 = "a", "b", "c"
t3 = (1, "Hello", 3.14, True)
single_tuple = (1,)
not_a_tuple = 1
print(empty_tuple) # ()
print(t1) # (1, 2, 3)
print(t2) # ('a', 'b', 'c')
print(t3) # (1, 'Hello', 3.14, True)
print(single_tuple) # (1,)
print(not_a_tuple) # 1
print(type(empty_tuple)) # <class 'tuple'>
print(type(t1)) # <class 'tuple'>
print(type(t2)) # <class 'tuple'>
print(type(t3)) # <class 'tuple'>
print(type(single_tuple)) # <class 'tuple'>
print(type(not_a_tuple)) # <class 'int'>
2๏ธโฃ ํํ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ, ์์ ํ๊ธฐ, ์ญ์ ํ๊ธฐ
ํํ์ ๋ถ๋ณ(Immutable) ํน์ฑ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์, ๊ฐ์ ์ฝ๋ ๊ฒ๋ง ๊ฐ๋ฅํ๊ณ ์์ ์ด๋ ์ญ์ ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
ํํ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
์ธ๋ฑ์ค๋ฅผ ํ์ฉํ์ฌ ํน์ ์์น์ ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค.
t = (10,20,30)
print(t[0]) # 10
print(t[1]) # 20
print(t[0:2]) # (10, 20)
ํํ ์์ ๋ฐ ์ญ์ (์๋ฌ ๋ฐ์)
ํํ์ ์์๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ญ์ ํ๋ ค๊ณ ํ๋ฉด TypeError๊ฐ ๋ฐ์ํฉ๋๋ค.
t = (10,20,30)
print(type(t)) # <class 'tuple'>
print(t) # (10,20,30)
t = (1,2,3)
print(type(t)) # <class 'tuple'>
print(t) # (1,2,3)
# ์์ ์งํ
t[0] = 100 # ์๋ฌ ๋ฐ์
Traceback (most recent call last):
File "<python-input-26>", line 1, in <module>
t[0] = 10
~^^^
TypeError: 'tuple' object does not support item assignment
# ์ญ์ ์งํ
del t[0] # ์๋ฌ ๋ฐ์
Traceback (most recent call last):
File "<python-input-27>", line 1, in <module>
del t[0]
~^^^
TypeError: 'tuple' object doesn't support item deletion
๐ฏ ํํ ๋ณ์ ์์ฒด์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ฌํ ๋น์ ๊ฐ๋ฅํ๋ ํํ ์์ ๊ฐ์ ์์ ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํํ ๋ณ์๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์ญ์ ํ๋ ๊ฒ(del t)์ ๊ฐ๋ฅํ์ง๋ง, ํํ ๋ด๋ถ์ ํน์ ์์๋ง ์ญ์ ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
3๏ธโฃ ํํ ์ธ๋ฑ์ฑ ๋ฐ ์ฌ๋ผ์ด์ฑ
๋ฆฌ์คํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ธ๋ฑ์ค๋ฅผ ํตํด ํน์ ์์น์ ๊ฐ์ ์ ๊ทผํ๊ฑฐ๋, ์ฌ๋ผ์ด์ฑ์ ํตํด ๋ฒ์ ๋จ์๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์ธ๋ฑ์ฑ(Indexing)
0๋ถํฐ ์์ํ๋ ์์ ์ธ๋ฑ์ค์ ๋ค์์๋ถํฐ ์ ๊ทผํ๋ ์์ ์ธ๋ฑ์ค๋ก ์ธ๋ฑ์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค.
t = ("apple", "banana", "cherry")
print(t[0]) # apple
print(t[-1]) # cherry
์ฌ๋ผ์ด์ฑ(Slicing)
[์์:๋:์ฆ๊ฐํญ] ํํ๋ก ์์ฑํ๋ฉฐ, ๋ ์ธ๋ฑ์ค๋ ํฌํจ๋์ง ์์ต๋๋ค.
numbers = (0,1,2,3,4,5,6)
print(numbers[1:4]) # (1, 2, 3) -> ์ธ๋ฑ์ค 1๋ถํฐ 3๊น์ง
print(numbers[:3]) # (0, 1, 2) -> ์ฒ์๋ถํฐ ์ธ๋ฑ์ค 2๊น์ง
print(numbers[3:]) # (3, 4, 5, 6) -> ์ธ๋ฑ์ค 3๋ถํฐ ๋๊น์ง
print(numbers[::2]) # (0, 2, 4, 6) -> 2์นธ์ฉ ๊ฑด๋๋ฐ๊ธฐ
4๏ธโฃ ํํ ์ฐ์ฐํ๊ธฐ
ํํ ๋ด๋ถ ์์๋ ๋ฐ๊ฟ ์ ์์ง๋ง, ํํ ๊ฐ์ ๋ํ๊ธฐ(+) ๋ฐ ๊ณฑํ๊ธฐ(*) ์ฐ์ฐ์ ํตํด ์๋ก์ด ํํ์ ๋ง๋ค์ด ๋ผ ์ ์์ต๋๋ค.
ํํ ๋ํ๊ธฐ(+)
t1 = (1,2)
t2 = (3,4)
result = t1 + t2
print(result) # (1, 2, 3, 4)
ํํ ๊ณฑํ๊ธฐ(*)
t1 = ("a", "b")
result = t1 * 3
print(result) # ('a', 'b', 'a', 'b', 'a', 'b')
ํํ ๊ธธ์ด ๊ตฌํ๊ธฐ
ํํ์ ๋ค์ด์๋ ์์์ ๊ฐ์๋ฅผ ๋ฐํํฉ๋๋ค. len() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ธธ์ด๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค.
t = (1,2,3,4,5,6,7,8)
print(len(t)) # 8
5๏ธโฃ ํํ ์ฃผ์ ํจ์
ํํ์ ๊ฐ์ด ๋ณํ์ง ์์ผ๋ฏ๋ก ์ ๊ณต๋๋ ์์ฒด ๋ฉ์๋(๋ด์ฅ ํจ์)๋ 2๊ฐ์ ๋๋ค. ํ์ง๋ง ํ์ด์ฌ์ ํ์ค ํจ์๋ค๊ณผ ํจ๊ป ์ ์ฉํ๊ฒ ์ฐ์ผ ์ ์์ต๋๋ค.
- count(value) ๋ฉ์๋
ํํ ๋ด์ ํน์ ๊ฐ์ด ๋ช ๊ฐ ์๋์ง ์นด์ดํธํฉ๋๋ค.
t = (1,2,3,4,5,1,2,3,1,2,1)
print(t.count(2)) # ์ถ๋ ฅ : 3 (์ซ์ 2๊ฐ 3๊ฐ ์์)
- index(value) ๋ฉ์๋
ํน์ ๊ฐ์ด ์ฒ์์ผ๋ก ๋ฑ์ฅํ๋ ์ธ๋ฑ์ค ์์น๋ฅผ ๋ฐํํฉ๋๋ค.
t = (1,2,3,4,5,1,2,3,1,2,1)
print(t.index(3)) # ์ถ๋ ฅ : 2 (์ซ์ 3์ ์ธ๋ฑ์ค 2๋ฒ์ ์์นํจ)
6๏ธโฃ ํํ ํจํน๊ณผ ์ธํจํน
ํํ์ ์์ฃผ ์ ์ฉํ ํน์ง ์ค ํ๋๋ ์ฌ๋ฌ ๊ฐ์ ๋ฌถ๊ฑฐ๋(Packing) ํ์ด์ ์ฌ๋ฌ ๋ณ์์ ํ ๋ฒ์ ํ ๋น(UnPacking) ํ ์ ์๋ค๋ ์ ์ ๋๋ค.
# ํํ ํจํน (์ฌ๋ฌ ๊ฐ์ ํ๋์ ํํ๋ก ๋ฌถ๊ธฐ)
packed = 1,2,3
# ํํ ์ธํจํน (ํํ์ ์์๋ฅผ ๊ฐ๊ฐ์ ๋ณ์์ ๋๋์ด ๋ด๊ธฐ)
a,b,c = packed
print(packed) # (1, 2, 3)
print(a) # 1
print(b) # 2
print(c) # 3
# ๋ณ์ ๊ฐ ์๋ก ๊ตํํ๊ธฐ (Swap)
x,y = 10,20
x,y = y,x # ๋ด๋ถ์ ์ผ๋ก ํํ ์ธํจํน ๋์
print(x, y) # 20 10
๋์ ๋๋ฆฌ(Dictionary)
๋์ ๋๋ฆฌ๋ ์ํ์ฌ์ ์์ 'Apple'์ ์ฐพ์๋ณด๋ฉด '์ฌ๊ณผ'๋ผ๊ณ ์ ์ํ๊ณ ์๋ ๊ฒ์ฒ๋ผ, ์ด๋ฆ(key)๊ณผ ๋ด์ฉ(Value)์ด ํ ์์ผ๋ก ๋ฌถ์ฌ ์๋ ๊ณต๊ฐ์ ๋ปํฉ๋๋ค. ๋์ ๋๋ฆฌ๋ ์ค๊ดํธ๋ฅผ ์ฌ์ฉํ๋ฉฐ ๋ฆฌ์คํธ๋ ํํ์ฒ๋ผ ์์ฐจ์ ์ผ๋ก ํด๋น ์์๊ฐ์ ๊ตฌํ์ง ์๊ณ ์ด๋ฆ(key)์ผ๋ก ์ํ๋ ๋ด์ฉ์ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค.
1๏ธโฃ ๋์ ๋๋ฆฌ ์์ฑ
๋์ ๋๋ฆฌ๋ ์ค๊ดํธ๋ฅผ ์ฌ์ฉํ๋ฉฐ, Key : Value ํํ๋ก ์์๋ฅผ ์์ฑํฉ๋๋ค. dict() ํจ์๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. Key๋ ์ค๋ณต๋ ์ ์์ผ๋ฉฐ, ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์๋ฃํ(๋ฌธ์์ด, ์ซ์, ํํ ๋ฑ)๋ง ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. Value๋ ์ค๋ณต์ด ๊ฐ๋ฅํ๋ฉฐ, ์ด๋ค ์๋ฃํ(๋ฆฌ์คํธ, ๋์ ๋๋ฆฌ ํฌํจ)์ด๋ ์ฌ ์ ์์ต๋๋ค.
# ์ค๊ดํธ๋ฅผ ์ด์ฉํ์ฌ ์์ฑ
person = {
"name" : "ํ๊ธธ๋",
"age" : 25,
"phone" : "010-123-1234",
"hobby" : [
"๋
์", "์ํ๊ฐ์"
]
}
# dict() ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ์์ฑ
car = dict(year=2025, brand="ํ๋", model="์๋ฐ๋ผ")
# ๋น ๋์
๋๋ฆฌ ์์ฑ
empty_dict1 = {}
empty_dict2 = dict()
print(person)
# ์ถ๋ ฅ : {'name': 'ํ๊ธธ๋', 'age': 25, 'phone': '010-123-1234', 'hobby': ['๋
์', '์ํ๊ฐ์']}
print(car)
# ์ถ๋ ฅ : {'year': 2025, 'brand': 'ํ๋', 'model': '์๋ฐ๋ผ'}
print(empty_dict1) # {}
print(empty_dict2) # {}
2๏ธโฃ ๋์ ๋๋ฆฌ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ, ์ถ๊ฐํ๊ธฐ, ์์ ํ๊ธฐ, ์ญ์ ํ๊ธฐ
๋์ ๋๋ฆฌ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
๋๊ดํธ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ .get() ๋ฉ์๋๋ฅผ ์ด์ฉํฉ๋๋ค.
- dict[key] : ํค๊ฐ ์์ผ๋ฉด KeyError ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
- dict.get(key) : ํค๊ฐ ์์ด๋ ์ค๋ฅ ๋์ None์ ๋ฐํํ๋ฏ๋ก ์์ ํฉ๋๋ค.
# ์ค๊ดํธ๋ฅผ ์ด์ฉํ์ฌ ์์ฑ
person = {
"name" : "ํ๊ธธ๋",
"age" : 25,
"phone" : "010-123-1234",
"hobby" : [
"๋
์", "์ํ๊ฐ์"
]
}
print(person["name"]) # ํ๊ธธ๋
print(person["phone"]) # 010-123-1234
print(person.get("hobby")) # ['๋
์', '์ํ๊ฐ์']
print(person.get("aaa", 200)) # 200 (ํค๊ฐ ์์ ๋ ๊ธฐ๋ณธ๊ฐ ์ง์ )
# ์๋ ํค๋ก ๊ฐ ๊บผ๋ผ๋
print(person["aaaa"]) # ์๋ฌ ๋ฐ์
Traceback (most recent call last):
File "<python-input-57>", line 1, in <module>
print(person["aaaa"])
~~~~~~^^^^^^^^
KeyError: 'aaaa'
print(person.get("aaaa")) # None : ์๋ฌ ๋ฐ์ํ์ง ์์
๋์ ๋๋ฆฌ์์ ๊ฐ์ ๊บผ๋ผ ๋, ์๋ ํค๋ฅผ ์ด์ฉํด์ ๊ฐ์ ๊บผ๋ด๊ฒ ๋๋ ๊ฒฝ์ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. 'person["aaa"]'์ ๊ฐ์ ํํ๋ก ๊ฐ์ ๊บผ๋ผ ๋์๋ ํค๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ๋ผ๋ฉด KeyError๊ฐ ๋ฐ์ํฉ๋๋ค. ํ์ง๋ง, 'person.get("aaa")'์ ๊ฐ์ ํํ๋ก ๊ฐ์ ๊บผ๋ผ ๋์๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๊ณ None์ด๋ผ๋ ๊ฐ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
๋์ ๋๋ฆฌ ์์ ๋ฐ ์ถ๊ฐ
์กด์ฌํ๋ ํค์ ๊ฐ์ ํ ๋นํ๋ฉด ์์ ๋๊ณ , ์กด์ฌํ์ง ์๋ ํค์ ๊ฐ์ ํ ๋นํ๋ฉด ์๋ก ์ถ๊ฐ๋ฉ๋๋ค.
info = {
"name" : "ํ๊ธธ์",
"score" : 89,
"subject" : "์ํ"
}
# ์์
info["score"] = 98
# ์ถ๊ฐ
info["grade"] = "A"
print(info)
# ์ถ๋ ฅ : {'name': 'ํ๊ธธ์', 'score': 98, 'subject': '์ํ', 'grade': 'A'}
๋์ ๋๋ฆฌ ์ญ์
del ํค์๋๋ .pop() ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
student = {
"name" : "์ ์ฌ์",
"math" : 90,
"eng" : 85,
"kor" : 92,
"sci" : 88
}
# del ์ฌ์ฉ
del student["sci"]
# .po() ์ฌ์ฉ
math_score = student.pop("math")
print(student) # {'name': '์ ์ฌ์', 'eng': 85, 'kor': 92}
print(math_score) # 90
student ๋ณ์์ ๋์ ๋๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ณ , ์ด๋ฆ๊ณผ ๊ณผ๋ชฉ์ ๋ฐ๋ฅธ ์ ์๋ฅผ ์ด๋ฆ๊ณผ ๊ฐ์ผ๋ก ๊ตฌ์ฑํ์์ต๋๋ค. del ํค์๋๋ฅผ ํ์ฉํด์ student ์์ ์๋ ๊ณผํ์ ์์ ๋ํ ์ด๋ฆ๊ณผ ๊ฐ์ ์ญ์ ํ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ .pop() ๋ฉ์๋๋ฅผ ํ์ฉํด์ student ์์ ์๋ math ๋ฐ์ดํฐ๋ฅผ ๊บผ๋์ต๋๋ค. .pop() ๋ฉ์๋๋ ๊ฐ์ ๊บผ๋๊ณผ ๋์์ ๋์ ๋๋ฆฌ ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํฉ๋๋ค. ์ฆ, ๊ฐ์ ๋ณต์ฌํ์ฌ ๊บผ๋ด์ค๋ ๊ฒ ์๋ ๊ฐ์ ์ญ์ ํ๋ฉด์ ๊บผ๋ด์ต๋๋ค.
3๏ธโฃ ๋์ ๋๋ฆฌ ์ธ๋ฑ์ฑ ๋ฐ ์ฌ๋ผ์ด์ฑ
๋์ ๋๋ฆฌ๋ ์ธ๋ฑ์ฑ๊ณผ ์ฌ๋ผ์ด์ฑ์ ์ง์ํ์ง ์์ต๋๋ค.
๋ฆฌ์คํธ๋ ํํ์ ์์๊ฐ ์๋ ์๋ฃํ์ด์ง๋ง, ๋์ ๋๋ฆฌ๋ ์์๊ฐ ์๋ ํค๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ์ ์กฐํํ๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ด์ฌ 3.7๋ถํฐ ์ ๋ ฅ ์์๊ฐ ์ ์ง๋๊ธด ํ์ง๋ง, ์ฌ์ ํ dict[0] ๊ฐ์ ์ ์ ์ธ๋ฑ์ฑ์ด๋ dict[0:2] ๊ฐ์ ์ฌ๋ผ์ด์ฑ์ ๋ถ๊ฐ๋ฅํ๋ฉฐ TypeError๊ฐ ๋ฐ์ํฉ๋๋ค.
4๏ธโฃ ๋์ ๋๋ฆฌ ์ฐ์ฐํ๊ธฐ
๋์ ๋๋ฆฌ๋ ์ซ์์ฒ๋ผ ๋ํ๊ฑฐ๋ ๊ณฑํ๋ ์ฐ์ฐ์ ์ง์ํ์ง ์์ง๋ง, ๋ณํฉ ์ฐ์ฐ์์ ํฌํจ ์ฌ๋ถ ํ์ธ ์ฐ์ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํฌํจ ์ฌ๋ถ ํ์ธ (in, not in)
ํน์ ํค(Key)๊ฐ ๋์ ๋๋ฆฌ์ ์กด์ฌํ๋์ง ํ์ธํฉ๋๋ค. (Value๋ ํ์ธํ์ง ์์์ ์ฃผ์)
data = {"a": 1, "b": 2}
print("a" in data) # True
print(1 not in data) # True
print(1 in data) # False (1์ Value ์ด๋ฏ๋ก ์ฐพ์ง ๋ชปํจ)
๋์ ๋๋ฆฌ ๋ณํฉ ( | ์ฐ์ฐ์)
ํ์ด์ฌ 3.9 ๋ฒ์ ๋ถํฐ๋ ' | ' ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ๋ ๋์ ๋๋ฆฌ๋ฅผ ์ฝ๊ฒ ํฉ์น ์ ์์ต๋๋ค. (์ค๋ณต๋๋ ํค๋ ๋ค์ ๊ฐ์ผ๋ก ๋ฎ์ด์์์ง๋๋ค.)
dict1 = {"apple" : 1000, "banana" : 2000}
dict2 = {"banana" : 2500, "orange" : 3000}
merged = dict1 | dict2
print(merged) # {'apple': 1000, 'banana': 2500, 'orange': 3000}
5๏ธโฃ ๋์ ๋๋ฆฌ ์ฃผ์ ํจ์
- keys() ๋ฉ์๋
๋์ ๋๋ฆฌ์ ๋ชจ๋ ํค(Key)๋ฅผ ๋ชจ์ dict_keys ๊ฐ์ฒด๋ก ๋ฐํํฉ๋๋ค. ๋ฐํ๋ ๊ฐ์ฒด๋ ๋์ ๋ทฐ ํํ๋ก, ๋์ ๋๋ฆฌ๊ฐ ์์ ๋๋ฉด ์๋์ผ๋ก ๋ฐ์๋๊ณ ํ์์ list(dict.keys()) ์ฒ๋ผ ๋ฆฌ์คํธ๋ก ๋ณํํ์ฌ ์ธ๋ฑ์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
user = {"name" : "Alice", "age" : 25, "role" : "admin"}
print(user.keys()) # dict_keys(['name', 'age', 'role'])
print(list(user.keys())) # ['name', 'age', 'role']
- values() ๋ฉ์๋
๋์ ๋๋ฆฌ์ ๋ชจ๋ ๊ฐ(Value)์ ๋ชจ์ dict_values ๊ฐ์ฒด๋ก ๋ฐํํฉ๋๋ค.
user = {"name" : "Alice", "age" : 25, "role" : "admin"}
print(user.values()) # dict_values(['Alice', 25, 'admin'])
print(list(user.values())) # ['Alice', 25, 'admin']
- items() ๋ฉ์๋
Key์ Value๋ฅผ ํํ ํํ๋ก ๋ฌถ์ด์ ๋ฐํํฉ๋๋ค. for๋ฌธ๊ณผ ํจ๊ป ๋์ ๋๋ฆฌ๋ฅผ ์ํํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
user = {"name" : "Alice", "age" : 25, "role" : "admin"}
# for๋ฌธ๊ณผ ํจ๊ป ๋ค์ค ํ ๋น ํ์ฉ
for key, value in user.items():
print(f"{key} -> {value}")
# ์ถ๋ ฅ
# name -> Alice
# age -> 25
# role -> admin
- update() ๋ฉ์๋
๋ค๋ฅธ ๋์ ๋๋ฆฌ๋ Key=Value ํํ์ ํค์๋ ์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ๊ฐ์ ์์ ํ๊ฑฐ๋ ์๋ก์ด ํค-๊ฐ ์์ ์ถ๊ฐํฉ๋๋ค.
info = {"name" : "Bob", "score" : 80}
info.update({"score": 95, "city" : "Seoul"})
print(info) # {'name': 'Bob', 'score': 95, 'city': 'Seoul'}
info.update(age=30, score=100)
print(info) # {'name': 'Bob', 'score': 100, 'city': 'Seoul', 'age': 30}
- clear() ๋ฉ์๋
๋์ ๋๋ฆฌ ์์ ๋ชจ๋ ํญ๋ชฉ์ ์ง์ ๋น ๋์ ๋๋ฆฌ({})๋ก ๋ง๋ญ๋๋ค.
data = {"a":1, "b":2}
print(data) # {'a': 1, 'b': 2}
data.clear()
print(data) # {}
@Junesker
'DEVELOPMENT > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํ์ด์ฌ ์งํฉ ์๋ฃํ ์ดํดํ๊ธฐ (0) | 2026.07.29 |
|---|---|
| ํ์ด์ฌ ๊ธฐ์ด ์๋ฃํ: ์ซ์ํ, ๋ฌธ์์ด, Bool ์ดํดํ๊ธฐ (3) | 2026.07.16 |
| ํ์ด์ฌ(Python)์ ๋ชจ๋ ๊ฒ (0) | 2026.07.15 |
| ์ดํด๋ฆฝ์ค(Eclipse)์ ํ์ด์ฌ(Python) ์ค์น ๋ฐ PyDev ์๋ฒฝ ์ฐ๋ ๊ฐ์ด๋ (0) | 2026.07.06 |
| ํ์ด์ฌ ์ ๋ฌธ: ํ์ด์ฐธ(PyCharm)์ผ๋ก 5๋ถ ๋ง์ "Hello World!" ์ถ๋ ฅํ๊ธฐ (0) | 2026.06.18 |