๐ ์ด ํฌ์คํ ์์๋ Python์ Set ๊ณผ Dictionary ์ ์ฐจ์ด, List ์ Tuple ์ ์ฐจ์ด์ ๋ํด์ ์ ๋ฆฌํ์์ต๋๋ค.
๐ฅ Set ๊ณผ Dictionary์ ์ฐจ์ด
๐ฅ List ์ Tuple์ ์ฐจ์ด
โ๏ธ dictํ๊ณผ setํ ๋ชจ๋ {}์ผ๋ก ๊ฐ์ธ์ ธ ์์ง๋ง, ๋ด๋ถ๊ตฌ์กฐ๋ dictํ์ key์ value๋ก ์ด๋ค์ ธ์๊ณ , set์ ์ค๋ณต๋์ง ์์ ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ ธ์์ต๋๋ค.
โ๏ธ ๋จ, dictํ์ key๋ฅผ ์ค๋ณต์ํฌ ์ ์์ง๋ง value๋ ์ค๋ณต์ด ๊ฐ๋ฅํฉ๋๋ค.
โ๏ธ dictํ์ ๊ตฌ์กฐ์ ์ผ๋ก ๋ค์ํ ์๋ฃํ์ ๋ณด๊ดํ ๋ ์ฌ์ฉํ๊ณ , set์ ๊ต์งํฉ, ์ฐจ์งํฉ, ํฉ์งํฉ ๋ฑ์ ์งํฉ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค.
a = {'name':'Kim', 'phone':'010-7777-7777', 'birth':890303} b = {0:'Hello Python', 1:'Hello Coding'} c = {'arr':[1,2,3,4,5]} print(type(a), a) # <class 'dict'> {'name': 'Kim', 'phone': '010-7777-7777', 'birth': 890303} print(a['name']) # Kim print(a.get('name')) # Kim print(a.get('address')) # None print(c['arr'][1:2]) # [2]
a = set() b = set([1,2,3,4]) c = set([1,4,5,6,6,4,5,6,1]) print(a) # set() print(b) # {1, 2, 3, 4} print(c) # {1, 4, 5, 6} t = tuple(b) l = list(c) print(t) # (1, 2, 3, 4) print(l) # [1, 4, 5, 6] s1 = set([1,2,3,4,5,6]) s2 = set([4,5,6,7,8,9]) # ๊ต์งํฉ print(s1.intersection(s2)) # {4, 5, 6} print(s1 & s2) # {4, 5, 6} # ํฉ์งํฉ print(s1.union(s2)) # {1, 2, 3, 4, 5, 6, 7, 8, 9} print(s1 | s2) # {1, 2, 3, 4, 5, 6, 7, 8, 9} # ์ฐจ์งํฉ print(s1.difference(s2)) # {1, 2, 3} print(s1 - s2) # {1, 2, 3}
โ๏ธ list์ tuple์ ์์๊ฐ ์๊ณ , ์ค๋ณต ๊ฐ๋ฅ์ด ๊ฐ๋ฅํ๋ค๋ ๊ณตํต์ ์ด ์์ผ๋, list๋ ์์ ๊ณผ ์ญ์ ๊ฐ ๊ฐ๋ฅํ์ง๋ง, tuple์ ์์ ๋ถ๊ฐ, ์ญ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
โ๏ธ ์ด์ list๋ ๊ฐ๋ณํ ์๋ฃ ๊ตฌ์กฐ์ด๊ณ , tuple์ ๋ํ์ ์ธ ๋ถ๋ณํ ์๋ฃ ๊ตฌ์กฐ์
๋๋ค.
a = [] b = list() c = [1, 2, 3, 4, 5] d = [10, 100, 'Pen', 'Banana', 'Orange'] e = [10, 100, ['Pen', 'Banana', 'Orange']]
a = () b = (1,) c = (1,2,3,4) d = (10, 100, ('a', 'b', 'c')) print(a,b,c) # () (1,) (1, 2, 3, 4) print(d) # (10, 100, ('a', 'b', 'c')) print(c[2]) # 3 print(c[3]) # 4 print(d[2][2]) # c print(d[2:]) # (('a', 'b', 'c'),) print(d[2][0:2]) # ('a', 'b') print(c+d) # (1, 2, 3, 4, 10, 100, ('a', 'b', 'c'))
โ๏ธ tuple์ ๋ถ๋ณํ์ด๊ธฐ ๋๋ฌธ์ ์ด์ฐจํผ ๊ฐ์ ์์ ์ด ๋ฐ์๋๋ฉด ๋ค๋ฅธ ๊ฐ์ฒด์ ๋๋ค. ์ด ํน์ง์ ํตํด ํจ์จ์ฑ์ ์ต์ ํ์ํค๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ์์๊ฐ๋ค์ด ์ผ์นํ๋ฉด ๊ฐ์ ๊ฐ์ฒด์ ๋๋ค.
t1 = (1, "์ฌ์", "python") t2 = (1, "์ฌ์", "python") print(t1, t2) # (1, '์ฌ์', 'python') (1, '์ฌ์', 'python') print(t1 == t2) # True print(id(t1), id(t2)) # 140294662918656 140294662918656 print(t1 is t2) # True
โ๏ธ ์๋ 2๊ฐ์ list๋ ๊ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ๋น๊ตํ๋ฉด True๊ฐ ๋ฐํ๋์ง๋ง, ๊ฐ์ ๊ฐ์ฒด์ธ์ง id๊ฐ์ ํ์ธํ๋ฉด False๋ฅผ ๋ฐํํฉ๋๋ค.
l1 = [1, "์ฌ์", "python"] l2 = [1, "์ฌ์", "python"] print(l1, l2) # [1, '์ฌ์', 'python'] [1, '์ฌ์', 'python'] print(l1 == l2) # True print(id(l1), id(l2)) # 140368827609408 140368829161024 print(l1 is l2) # False
โ๏ธ ํจ์์ parameter๋ก list์ tuple์ด ์ ๋ฌ๋ ๋ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
def plus(x, y): x += y return x
โ๏ธ tuple์ ๋ถ๋ณํ์ด๊ธฐ ๋๋ฌธ์ ์์ ์ด ๋ฐ์๋๋ฉด ์๋ก์ด ๊ฐ์ฒด๋ก ๋ฐํ๋ฉ๋๋ค. ์ฆ ์๋ก์ด ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ id๊ฐ์ด ๊ธฐ์กด๊ณผ ๊ฐ์ง ์์ต๋๋ค.
โ๏ธ ์ฆ, ํ ๋น์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ผ๋ ํ ๋น์ ๊ฐ๋
์ด ์๋ ์ฌํ์์ผ๋ก ๋ณด๋๊ฒ ๋ง์ต๋๋ค.
t1 = (10, 100) t2 = (5, 10) print(plus(t1, t2), t1, t2) # (10, 100, 5, 10) (10, 100) (5, 10) print(id(plus(t1, t2)), id(t1), id(t2)) # 140515106090816 140515106054848 140515127551168
โ๏ธ list๋ ๊ฐ๋ณํ์ด๊ธฐ ๋๋ฌธ์ l1์ id๊ฐ์ ํ ๋น์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ ์์ ์ด ์ด๋ค์ง ๋, ๊ธฐ์กด id๊ฐ์ ๋ฎ์ด์์ด์ง๊ธฐ ๋๋ฌธ์ ์๋ณธ์ ๊ฐ๋ ๋ณ๊ฒฝ๋ฉ๋๋ค.
โ๏ธ ์ด์ ์๋ณธ์ ์์ ์ ์์น์์ผ๋ฉด tuple, ์์ ๋๋ ์๊ด์์ผ๋ฉด list๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํด์ผํฉ๋๋ค.
โ๏ธ
l1 = [10, 100] l2 = [5, 10] print(plus(l1, l2), l1, l2) # [10, 100, 5, 10] [10, 100, 5, 10] [5, 10] print(id(plus(l1, l2)), id(l1), id(l2)) # 140714272038400 140714272038400 140714272038592