๋ฆฌ์คํธ ์ค๋ช
์ ์์ ์ปฌ๋ ์
ํ์
์ ๋ํด ์์๋ณด์

์ปฌ๋ ์ ํ์ ์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ ํญ๋ชฉ์ ํ๋์ ๋จ์๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์๋ฏธํ๋ค. ์ฆ, ์ฌ๋ฌ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๋ณ์์ ์ ์ฅํ์ฌ ๊ด๋ฆฌํ ์ ์๋ ๊ฒ์ด๋ค. ํ์ด์ฌ์์๋ ๋ฆฌ์คํธ, ํํ, ์ธํธ, ๋์ ๋๋ฆฌ ๋ฑ์ด ๊ธฐ๋ณธ์ ์ธ ์ปฌ๋ ์ ํ์ ์ด๋ค.
์ปฌ๋ ์ ํ์ ์ค ํ๋์ธ ๋ฆฌ์คํธ๋ ์ฌ๋ฌ ๊ฐ๋ค์ ํ๋์ ๋ณ์์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ์์ฐจ์ ์ธ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ฌ๋ฌ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ดํธ([])ํน์ ๋ฌถ๊ฑฐ๋ list()ํจ์๋ก ํ๋์ ๋ณ์์ ์ ์ฅํ๋ค.
li1 = [1, 3, 5, 7, 9]
print(li1) # ์ถ๋ ฅ: [1, 3, 5, 7, 9]
print(type(li1)) # ์ถ๋ ฅ: <class 'list'>
li2 = list([1, 3, 5, 7, 9])
print(li2) # ์ถ๋ ฅ: [1, 3, 5, 7, 9]
print(type(li2)) # ์ถ๋ ฅ: <class 'list'>
๐น: ์ฌ๊ธฐ์ ์ ๊น! ๋๋ฅ
๋ฐฐ์ด vs ๋ฆฌ์คํธ
c, c++, ์๋ฐ์์ ๋ฐฐ์ด(Array)๋ผ๋ ๊ฐ๋
์ ๋ง์ด ์ฌ์ฉํ๋ค. ๋ฐฐ์ด์ ๋ฆฌ์คํธ์ ๊ฐ์ด ์ธ๋ฑ์ค 0๋ถํฐ ์์ํด์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ค์ ํ ๋ฒ์ ์ ์ฅํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ๋ค๋ง ๋ฐฐ์ด์ ๊ฐ์ ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ง์ ์ ์ฅํด์ผ ํ๋ค๋ ์ ์์ ๋ฆฌ์คํธ์ ์ฐจ์ด๋ฅผ ๊ฐ์ง๋ค. ๊ฐ์ ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ์ญํ ์ ํ์ง๋ง, ๋ค๋ฅธ ํ์
์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ง ๋ชปํ๊ณ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น, ์๋ ์ ํ ๋ฑ์ ๋จ์ ์ด ์์ด ํ์ด์ฌ์์๋ ๋ฐฐ์ด์ ์ญํ ์ ๋ฆฌ์คํธ๊ฐ ๋์ ํ๋ค.
li3 = ['์ ๋ฏผ์ฝฉ', '์ ๋น์ฝฉ', '์ ํ์ฝฉ', '์ํ์ฝฉ']
print(li3) # ์ถ๋ ฅ: ['์ ๋ฏผ์ฝฉ', '์ ๋น์ฝฉ', '์ ํ์ฝฉ', '์ํ์ฝฉ']
li4 = [1, 50.5, '์ ๋ฏผ์ฝฉ', True]
print(li4) # ์ถ๋ ฅ: [1, 50.5, '์ ๋ฏผ์ฝฉ', True]
li5 = [1, 2, 'ํ์ด์ฌ', ['์ ๋ฏผ์ฝฉ', '์ ๋น์ฝฉ']] #๋ฆฌ์คํธ ์์ ๋ฆฌ์คํธ ์ ์ฅ ๊ฐ๋ฅ
print(li5) # ์ถ๋ ฅ: [1, 2, 'ํ์ด์ฌ', ['์ ๋ฏผ์ฝฉ', '์ ๋น์ฝฉ']]
๋ฆฌ์คํธ๋ช [์ธ๋ฑ์ค๋ฒํธ]๋ก ํด๋น ์ธ๋ฑ์ค ๋ฒํธ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์๋ค. ์ธ๋ฑ์ค ๋ฒํธ๋ 0๋ถํฐ ์์ํ๋ค.
li6 = [1, 50.5, '์ ๋ฏผ์ฝฉ', True]
print(li6) # ์ถ๋ ฅ: [1, 50.5, '์ ๋ฏผ์ฝฉ', True]
print(type(li6)) # ์ถ๋ ฅ: <class 'list'>
print(li6[0]) # ์ถ๋ ฅ: 1
print(type(li6[0])) # ์ถ๋ ฅ: <class 'int'>
print(li6[1]) # ์ถ๋ ฅ: 50.5
print(type(li6[1])) # ์ถ๋ ฅ: <class 'float'>
print(li6[2]) # ์ถ๋ ฅ: ์ ๋ฏผ์ฝฉ
print(type(li6[2])) # ์ถ๋ ฅ: <class 'str'>
print(li6[3]) # ์ถ๋ ฅ: True
print(type(li6[3])) # ์ถ๋ ฅ: <class 'bool'>
print(li[4]) # IndexError: list index out of range
์ธ๋ฑ์ค ๋ฒํธ์ -๋ฅผ ๋ถ์ด๋ฉด ๋งจ ๋ค ์ธ๋ฑ์ค๋ถํฐ ๊ฐ์ ธ์จ๋ค.
li1 = [1, 3, 5, 7, 9]
print(li1[0]) # ์ถ๋ ฅ: 1
print(li1[-1]) # ์ถ๋ ฅ: 9
๋ฆฌ์คํธ๋ช [์ธ๋ฑ์ค๋ฒํธ][์ธ๋ฑ์ค๋ฒํธ] ํํ๋ก ๋ฆฌ์คํธ ์์ ์๋ ๋ฆฌ์คํธ์ ์์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
li5 = [1, 2, 'ํ์ด์ฌ', ['์ ๋ฏผ์ฝฉ', '์ ๋น์ฝฉ']]
print(li5[3][0]) # ์ถ๋ ฅ: ์ ๋ฏผ์ฝฉ
print(li5[3][1]) # ์ถ๋ ฅ: ์ ๋น์ฝฉ
li6 = [1, 2, 3, ['์ ๋ฏผ์ฝฉ', '์ ํ์ฝฉ', '์ํ์ฝฉ', ['๐', '๐', '๐', '๐']]]
print(li6[-1]) # ์ถ๋ ฅ: ['์ ๋ฏผ์ฝฉ', '์ ํ์ฝฉ', '์ํ์ฝฉ', ['๐', '๐', '๐', '๐']]
print(li6[-1][-2]) # ์ถ๋ ฅ: ์ํ์ฝฉ
print(li6[-1][-1][-1]) # ์ถ๋ ฅ: ๐
print(li6[3][3][0]) # ์ถ๋ ฅ: ๐
๋ฆฌ์คํธ๋ช [start:stop:step] ์ ํํ๋ก ์ํ๋ ๋ฒ์๋งํผ์ ์์๋ค์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
1. start: ์ฌ๋ผ์ด์ค์ ์์ ์ธ๋ฑ์ค. ์ด ์ธ๋ฑ์ค์ ์์๋ ์ฌ๋ผ์ด์ค์ ํฌํจ๋๋ค. start๋ฅผ ์๋ตํ๋ฉด, step์ด ์์์ผ ๋ 0, step์ด ์์์ผ ๋ -1๋ก ๊ฐ์ฃผ๋๋ค.
2. stop: ์ฌ๋ผ์ด์ค์ ๋ ์ธ๋ฑ์ค. ์ด ์ธ๋ฑ์ค์ ์์๋ ์ฌ๋ผ์ด์ค์ ํฌํจ๋์ง ์๋๋ค. stop์ ์๋ตํ๋ฉด, step์ด ์์์ด๋ฉด ์ํ์ค์ ๋, step์ด ์์์ด๋ฉด ์ํ์ค์ ์์์ผ๋ก ๊ฐ์ฃผ๋๋ค.
3. step: ์ฌ๋ผ์ด์ค์ ์คํ (์ฆ๊ฐ) ๊ฐ. step์ ์๋ตํ๋ฉด 1๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
li1 = [1, 3, 5, 7, 9]
print(li1[0:3]) # ์ถ๋ ฅ: [1, 3, 5]
print(li1[0:4:2]) # ์ถ๋ ฅ: [1, 5]
print(li1[:2]) # ์ถ๋ ฅ: [1, 3]
print(li1[1:]) # ์ถ๋ ฅ: [3, 5, 7, 9]
print(li1[:]) # ์ถ๋ ฅ: [1, 3, 5, 7, 9]
li6 = [1, 2, 3, ['์ ๋ฏผ์ฝฉ', '์ ํ์ฝฉ', '์ํ์ฝฉ', ['๐', '๐', '๐', '๐']]]
print(li6[3][3][0]) # ์ถ๋ ฅ: ๐
print(li6[3][3:4][0:1]) # ์ถ๋ ฅ: [['๐', '๐', '๐', '๐']]
๋ฆฌ์คํธ์์ ์ญ์ ํ๊ณ ์ถ์ ์์(๋ค)์ ๋น ๋ฆฌ์คํธ๋ฅผ ๋ฃ๊ฑฐ๋ del์ ์ฌ์ฉํด ๋ฆฌ์คํธ์ ์์(๋ค)๋ฅผ ์ญ์ ํ ์ ์๋ค.
li1 = [1, 3, 5, 7, 9]
li1[1:3] = []
print(li1) # ์ถ๋ ฅ: [1, 7, 9]
li1 = [1, 3, 5, 7, 9]
del li1[2]
print(li1) # ์ถ๋ ฅ: [1, 3, 7, 9]
- +: ๋ฆฌ์คํธ ํฉ๋ณ
- *: ๋ฆฌ์คํธ ๋ฐ๋ณต
li7 = [10, 20, 30]
li8 = [40, 50, 60]
print(li7 + li8) # ์ถ๋ ฅ: [10, 20, 30, 40, 50, 60]
print(li8 + li7) # ์ถ๋ ฅ: [40, 50, 60, 10, 20, 30]
print(li7 * 3) # ์ถ๋ ฅ: [10, 20, 30, 10, 20, 30, 10, 20, 30]
li7 = li7 + [100, 200]
print(li7) # ์ถ๋ ฅ: [10, 20, 30, 100, 200]
๋ฆฌ์คํธ์ ๊ธธ์ด(์์์ ๊ฐ์)๋ฅผ ๋ฐํํ๋ ํจ์
li1 = [1, 3, 5, 7, 9]
print(len(li1)) # ์ถ๋ ฅ: 5
๋ฆฌ์คํธ์ ๋์ ์๋ก์ด ํญ๋ชฉ์ ์ถ๊ฐํ๋ ๋ฉ์๋
li1.append(100)
print(li1) # ์ถ๋ ฅ: [1, 3, 5, 7, 9, 100]
li1.append(200, 300, 400) #TypeError: list.append() takes exactly one argument (3 given)
li1.append([200, 300, 400])
print(li1) # ์ถ๋ ฅ: [1, 3, 5, 7, 9, 100, [200, 300, 400]]
๋ฆฌ์คํธ์ iterable(๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด)์ ๋ชจ๋ ํญ๋ชฉ์ ์ถ๊ฐํ๋ ๋ฉ์๋
li1 = [1, 3, 5, 7, 9]
li1.extend([50])
print(li1) # ์ถ๋ ฅ: [1, 3, 5, 7, 9, 50]
li1.extend([100, 200])
print(li1) # ์ถ๋ ฅ: [1, 3, 5, 7, 9, 50, 100, 200]
๋ฆฌ์คํธ์์ ๋งจ ๋ง์ง๋ง ์์๋ฅผ ์ญ์ ํ๊ณ ์ญ์ ๋ ํญ๋ชฉ์ ๋ฐํํ๋ ๋ฉ์๋
li1 = [1, 3, 5, 7, 9]
print(li1.pop()) # ์ถ๋ ฅ: 9
print(li1) # ์ถ๋ ฅ: [1, 3, 5, 7]
temp = li1.pop()
print(temp) # ์ถ๋ ฅ: 7
print(li1) # ์ถ๋ ฅ: [1, 3, 5]
๋ฆฌ์คํธ์ ํน์ ์ธ๋ฑ์ค ํญ๋ชฉ์ ์ถ๊ฐํ๋ ๋ฉ์๋
li1 = [1, 3, 5, 7, 9]
li1.insert(1, 100) #1๋ฒ ์ธ๋ฑ์ค ์๋ฆฌ์ 100 ์ถ๊ฐ ํ ๋๋จธ์ง ์ ๋ค ๋ค๋ก ๋ณด๋
print(li1) # ์ถ๋ ฅ: [1, 100, 3, 5, 7, 9]
li1.insert(2, [1000, 2000])
print(li1) # ์ถ๋ ฅ: [1, 100, [1000, 2000], 3, 5, 7, 9]
๋ฆฌ์คํธ์์ ํน์ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ ๋ฉ์๋
li1 = [1, 3, 5, 7, 9]
print(li1.index(3)) # ์ถ๋ ฅ: 1
print(li1.index(10)) # ValueError: 10 is not in list
๋ฆฌ์คํธ์ ์์๋ฅผ ๋ค์ง๋ ๋ฉ์๋. inplace ์ฐ์ฐ(๋ณํ ํ ์๊ธฐ์์ ์๊ฒ ์ ์ฅ๋จ) ์ํ.
li8 = [100, 50, 80, 60, 20]
print(li8) # ์ถ๋ ฅ: [100, 50, 80, 60, 20]
li8.reverse()
print(li8) # ์ถ๋ ฅ: [20, 60, 80, 50, 100]
๋ฆฌ์คํธ์ ํญ๋ชฉ๋ค์ ์ ๋ ฌํ๋ ๋ฉ์๋. iplace ์ฐ์ฐ์ ์ํ
li8 = [100, 50, 80, 60, 20]
print(li8) # ์ถ๋ ฅ: [100, 50, 80, 60, 20]
li8.sort(reverse = True) # ๋ด๋ฆผ์ฐจ์
print(li8) # ์ถ๋ ฅ: [100, 80, 60, 50, 20]
li9 = ['Apple', 'apple', 'orange', 'Banna', 'banna', 'melon']
li9.sort() # ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ์์คํค์ฝ๋ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์
print(li9) # ์ถ๋ ฅ: ['Apple', 'Banna', 'apple', 'banna', 'melon', 'orange']
li10 = ['์ ๋ฏผ์ฝฉ', '์ ๋น์ฝฉ', '์ ํ์ฝฉ', '์ํ์ฝฉ']
li10.sort()
print(li10) # ์ถ๋ ฅ: ['์ํ์ฝฉ', '์ ๋ฏผ์ฝฉ', '์ ๋น์ฝฉ', '์ ํ์ฝฉ']
๐น: ์ฌ๊ธฐ์ ์ ๊น! ๋๋ฅ
sort() vs sorted()
sort()๋ inplace ์ฐ์ฐ์ ์ํํ์ง๋ง sorted()๋ ์ ๋ ฌ๋ ํจ์๋ฅผ ๋ฐํํ๊ณ ๋ค์ ์๋๋๋ก ๋์์จ๋ค.
li8 = [100, 50, 80, 60, 20]
print(sorted(li8)) # ์ถ๋ ฅ: [20, 50, 60, 80, 100]
print(li8) # ์ถ๋ ฅ: [100, 50, 80, 60, 20]
result = sorted(li8) # ์๋ก์ด ๋ณ์์ ์ ๋ ฌ๋ ํจ์ ์ ์ฅ
print(result) # ์ถ๋ ฅ: [20, 50, 60, 80, 100]
๋ฆฌ์คํธ๋ช [::-1] ๋ก ๊ฐ๋จํ๊ฒ ๋ฆฌ์คํธ์ ์์๋ฅผ ๋ค์ง์ ์ ์๋ค.
li8 = [100, 50, 80, 60, 20]
print(li8) # ์ถ๋ ฅ: [100, 50, 80, 60, 20]
print(li8[::-1]) # ์ถ๋ ฅ: [20, 60, 80, 50, 100]
๋ฆฌ์คํธ์์ ํน์ ๊ฐ์ ๊ฐ์๋ฅผ ๋ฐํํ๋ ๋ฉ์๋
li9 = [10, 20, 30, 40, 50, 20, 40, 30, 20]
print(li9.count(20)) # ์ถ๋ ฅ: 3
print(li9.count(100)) # ์ถ๋ ฅ: 0