Python
[python] ์๋ฃ๊ตฌ์กฐ
winter17
2023. 2. 9. 23:26
๐ฑ ๋ฆฌ์คํธ ๋ฉ์๋
fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
fruits.count('apple')
>> 2 # 'apple'์ ๊ฐ์๋ฅผ ์
fruits.index('banana')
>> 3 # 'banana'์ ์์น๋ฅผ ๋ฐํ
fruits.reverse() # ์๋ณธ์ ๋ค์ง์ด ๋ฒ๋ฆผ
fruits
>> ['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange']
fruits.append('grape') # 'grape'๋ฅผ ๋ฆฌ์คํธ ๋ง์ง๋ง์ append
fruits
>> ['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange', 'grape']
fruits.sort() # ๋ฆฌ์คํธ ์๋ณธ์ ๋ณ๊ฒฝ
fruits
>> ['apple', 'apple', 'banana', 'banana', 'grape', 'kiwi', 'orange', 'pear']
fruits.pop() # ๋ฆฌ์คํธ์ ๋ง์ง๋ง ์์น์ ์์๋ฅผ ์ญ์ ํ๊ณ ๋๋ ค์ค
'pear'
๐ฑ ์๋ฃ๊ตฌ์กฐ (์คํ / ํ / ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ / ์ค์ฒฉ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ )
โถ๏ธ ์คํ
- last - in , first-out ํ์ ์ ์ถ ๋ฐฉ์
stack = [3, 4, 5]
stack.append(6) # ๋ง์ง๋ง์ ์ถ๊ฐ
stack.append(7) # ๋ง์ง๋ง์ ์ถ๊ฐ
stack
>> [3, 4, 5, 6, 7]
stack.pop() # ๋ง์ง๋ง ์์ ์ญ์
>> 7
stack
>> [3, 4, 5, 6]
โถ๏ธ ํ
- first - in, first - out ์ ์ ์ ์ถ
- ์ฒ์์ผ๋ก ๋ฃ์ ์์๋ฅผ ์ฒ์์ผ๋ก ๊บผ๋ด๋ ๋ฐฉ์์ด๋ผ ์๊ฐ์ด ๋ง์ด ์์๋๊ธฐ ๋๋ฌธ์ ํ ๋ฌธ์ ์์๋ collections.deque ์ฌ์ฉํจ
from collections import deque
queue = deque(["Eric", "John", "Michael"])
queue.append("Terry")
queue.append("Graham")
queue.popleft() # ๊ฐ์ฅ ์ผ์ชฝ์ ์์, ์ ์ผ ์ฒ์๋ค์ด๊ฐ ์์๋ฅผ ์ญ์ ํ ๋ฐํ
>> 'Eric'
queue.popleft()
>> 'John'
print(queue)
>> deque(['Michael', 'Terry', 'Graham'])
โถ๏ธ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
# for๋ฌธ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
squares = []
for x in range(10):
squares.append(x**2)
# x๋ผ๋ ๋ณ์๋ฅผ ๋ง๋ค๊ณ ๋ฃจํ๊ฐ ์ข
๋ฃ๋ ํ์๋ ๋จ์์๊ฒ ๋ง๋ฆ
squares = list(map(lambda x: x**2, range(10)))
# ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
squares = [x**2 for x in range(10)]
# ์์ ์ ๊ฒฐ๊ณผ ๊ฐ์ ๋ชจ๋ ๊ฐ์
โถ๏ธ ์ค์ฒฉ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
# ์ด์ค for๋ฌธ์ผ๋ก ์ด์ค๋ฆฌ์คํธ
transposed = []
for i in range(4):
# the following 3 lines implement the nested listcomp
transposed_row = []
for row in matrix:
transposed_row.append(row[i])
transposed.append(transposed_row)
# for๋ฌธ์ผ๋ก ์ด์ค๋ฆฌ์คํธ
transposed = []
for i in range(4):
transposed.append([row[i] for row in matrix])
# ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
์ผ๋ก ์ด์ค๋ฆฌ์คํธ
transposed = [[row[i] for row in matrix] for i in range(4)]
transposed
>> [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
# ์์ ๋ณต์กํ ๊ณผ์ ๋ณด๋ค ๋ด์ฅํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์์ฒ๋ผ ๊ฐ๋จํด์ง
list(zip(*matrix))
>> [(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]
๐ฑ del๋ฌธ
- ๊ฐ ๋์ ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด์ ํญ๋ชฉ์ ์ญ์ ํ๋ ๋ฐฉ๋ฒ
- ๊ฐ์ ๋๋ ค์ฃผ๋ pop()๊ณผ ๋ค๋ฆ
- ์ธ๋ฑ์ฑ, ์ฌ๋ผ์ด์ฑ, ์ ์ฒด๋ฆฌ์คํธ ์ญ์ ๋ชจ๋ ๊ฐ๋ฅ
# ์ธ๋ฑ์ฑ
a = [-1, 1, 66.25, 333, 333, 1234.5]
del a[0]
>> [1, 66.25, 333, 333, 1234.5]
#์ฌ๋ผ์ด์ฑ
del a[2:4]
a
>> [1, 66.25, 1234.5]
#์ฌ๋ผ์ด์ฑ์ ํตํ ์ ์ฒด๋ฆฌ์คํธ ์ญ์
del a[:]
a
>> []
๐ฑ ํํ๊ณผ ์ํ์ค
- ํํ์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค(immutable) => TypeError ๋ฐ์
t = 12345, 54321, 'hello!'
t[0]
>> 12345
t
>> (12345, 54321, 'hello!') # ํํ์ ๊ดํธ๋ก ๋๋ฌ์ธ์
# ํํ์ ์ค์ฒฉ
u = t, (1, 2, 3, 4, 5)
u
>> ((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
empty = ()
singleton = 'hello', # ํํ์ ๊ฐ ๋ค์ ์ผํ!
print(len(empty))
# 0
print(len(singleton))
# 1
print(singleton)
# ('hello',)
๐ฑ ์งํฉ
a = set('abracadabra')
b = set('alacazam')
a # ์ค๋ณต ์ญ์
>> {'a', 'r', 'b', 'c', 'd'}
a - b # ์ฐจ์งํฉ
{'r', 'd', 'b'}
a | b # ํฉ์งํฉ
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
a & b # ๊ต์งํฉ (a, b ๊ณตํต์์)
{'a', 'c'}
a ^ b # ๋์นญ์ฐจ์งํฉ(๊ต์งํฉ์ ๋บ ๊ฒ)
{'r', 'd', 'b', 'm', 'z', 'l'}
๐ฑ ๋์ ๋๋ฆฌ
tel = {'jack': 4098, 'sape': 4139}
tel['guido'] = 4127 # ํค์ ๊ฐ ์ถ๊ฐํ๊ธฐ
tel
>> {'jack': 4098, 'sape': 4139, 'guido': 4127}
del tel['sape']
tel
>> {'jack': 4098, 'guido': 4127}
list(tel) # ๋์
๋๋ฆฌ tel์ ๋ฆฌ์คํธ๋ก ๋ณํ
>> ['jack', 'guido', 'irv']
sorted(tel) # ๋ฆฌ์คํธ tel ์ ๋ ฌ(์๋ณธ๋ณ๊ฒฝx)
>> ['guido', 'irv', 'jack']
๐ฑ ๋ฃจํ ํ ํฌ๋
# ๋์
๋๋ฆฌ loop ๋๋ ค์ ํค์ ๊ฐ์ ๋์์ ์ถ๋ ฅํ ๋ : items()
knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.items():
print(k, v)
>> gallahad the pure
>> robin the brave
# ์ํ์ค๋ฅผ loop๋๋ ค์ ์์น์ ๊ฐ ๋์์ ์ป์ : enumerate()
for i, v in enumerate(['tic', 'tac', 'toe']):
print(i, v)
>> 0 tic
>> 1 tac
>> 2 toe
# ๋ ์ด์์ ์ํ์ค๋ฅผ ๋์์ loop : zip()
questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):
print(f'What is your {q}? It is {a}.')
>> What is your name? It is lancelot.
>> What is your quest? It is the holy grail.
>> What is your favorite color? It is blue.
# ์ํ์ค๋ฅผ ๊ฑฐ๊พธ๋ก loop : reversed() -- ์๋ณธ๋ณ๊ฒฝx
for i in reversed(range(1, 10, 2)):
print(i)
>> 9
>> 7
>> 5
>> 3
>> 1
# ์ ๋ ฌ๋ ์์๋ก ์ํ์ค loop : sorted() -- ์๋ณธ๋ณ๊ฒฝx
basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
for i in sorted(basket):
print(i)
>> apple
>> apple
>> banana
>> orange
>> orange
>> pear
# ์ํ์ค ์ค๋ณต์์ ์ ๊ฑฐ์ ์ ๋ ฌ
basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
for f in sorted(set(basket)):
print(f)
>> apple
>> banana
>> orange
>> pear
๐ฑ ์กฐ๊ฑด ๋๋ณด๊ธฐ
# ๋น๊ต ์ฐ์ฐ์๋ ๋ชจ๋ ๊ฐ์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค
# a ๊ฐ b ๋ณด๋ค ์๊ณ , ๋์์ b ๊ฐ c ๊ฐ๋ค
a < b == c # ์ด๋ ๊ฒ ์ฌ์ฉํ๋๊ฒ ํ์ด์จ๋ ํ์ง์์๊น!
a < b and b == c
๐ฑ ์ํ์ค์ ๋ค๋ฅธ ํ๋ค์ ๋น๊ตํ๊ธฐ
# ์ํ์ค์ ํ์ด ๋ค๋ฅด์ง๋ง ๋น๊ต๋ ๋ ์ฌ์ ์ ์์๋ฅผ ๋ฐ๋ฅด๋๋ฐ (์ฒซ ๋ ํญ๋ชฉ, ๋ค์ ๋ ํญ๋ชฉ ๋น๊ต ~)
(1, 2, 3) < (1, 2, 4)
[1, 2, 3] < [1, 2, 4]
# ๋น๊ต๋๋ ๋ ํญ๋ชฉ์ด ๊ฐ์ ํ์ ์ํ์ค๋ผ๋ฉด, ์ฌ์ ์ ๋น๊ต๊ฐ ์ฌ๊ท์ ์ผ๋ก ์ํ
# ์ฌ๊ท(recursion): ์ด๋ ํ ๊ฒ์ ์ ์ํ ๋ ์๊ธฐ ์์ ์ ์ฐธ์กฐํ๋ ๊ฒ
'ABC' < 'C' < 'Pascal' < 'Python'
# 3๊ณผ 4๋ฅผ ๋น๊ตํ์ ๋ 4๊ฐ ๋ ํฌ๋ค
(1, 2, 3, 4) < (1, 2, 4)
# ์๋ก ๋ค๋ฅธ ์ซ์ ํ๋ค์ ๊ทธ๋ค์ ์ซ์ ๊ฐ์ ๋ฐ๋ผ ๋น๊ต
(1, 2, 3) == (1.0, 2.0, 3.0)
# ํ ์ํ์ค๊ฐ ๋ค๋ฅธ ํ๋์ ๋จธ๋ฆฌ ๋ถ๋ถ ์๋ธ ์ํ์ค๋ฉด, ์งง์ ์ํ์ค๊ฐ ์์ ๊ฒ
(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)
(1, 2) < (1, 2, -1)