πŸ“š liist & tuple dictionary & set

νŒ”λ¦¬λ™Β·2021λ…„ 8μ›” 4일
0
post-thumbnail

λ¦¬μŠ€νŠΈμ™€ νŠœν”Œμ˜ 차이와 λ”•μ…”λ„ˆλ¦¬μ™€ μ…‹μ˜μ°¨μ΄λ₯Ό μ•Œμ•„λ³΄μž

πŸš€ liist & tuple

생성 방식

  • list
a = []
a = list()
  • tuple
b = ()
b = tuple()

μš”μ†Œ λ³€κ²½ κ°€λŠ₯ μ—¬λΆ€

  • 리슀트의 μš”μ†ŒλŠ” μΆ”κ°€ ν•˜κ±°λ‚˜ μ‚­μ œν•  수 μžˆμ§€λ§Œ νŠœν”Œμ€ 이미 μ„ μ–Έλ˜λ©΄ μš”μ†Œλ₯Ό λ„£κ±°λ‚˜ μ‚­μ œν•  수 μ—†λ‹€.
  • list
a = [1,2,3]
a.append(4)

>>> a=[1,2,3,4]

del a[-1]

>>> a=[1,2,3]
  • tuple
a = (1,2)
a.append(3)

>>> AttributeError: 'tuple' object has no attribute 'append'

del a[0]

>>> TypeError: 'tuple' object doesn't support item deletion

μ΄ν„°λ ˆμ΄μ…˜ 속도

  • νŠœν”Œμ΄ μ΄ν„°λ ˆμ΄μ…˜μ„ λ„λŠ” 속도가 더 λΉ λ₯΄λ‹€.
import time

big_list = [num for num in range(1000000)]
big_tuple = tuple([num for num in range(1000000)])
start = time.time()

for num in big_list:
    pass
 
print("list iteration: {}".format(time.time() - start))
start = time.time()

for num in big_tuple:
    pass

print("tuple iteration: {}".format(time.time() - start))

>>> list iteration: 0.027995824813842773
>>> tuple iteration: 0.024797916412353516

객체 볡사 방식 차이

  • list
a = [1,2,3]
b = list(a)
print(a is b)

>>> False

λ¦¬μŠ€νŠΈλŠ” 객체λ₯Ό λ³΅μ‚¬ν•˜κ²Œ 되면 λ‹€λ₯Έ 객체가 생성 되기 λ•Œλ¬Έμ— a와 b의 아이디값이 λ‹€λ₯΄κ²Œ λœλ‹€.

  • tuple
a = (1,2,3)
b = tuple(a)
print(a is b)

>>> True

νŠœν”Œμ€ 객체λ₯Ό λ³΅μ‚¬ν•˜λ©΄ 객체λ₯Ό μ°Έμ‘°ν•˜λŠ” μ£Όμ†Œλ₯Ό ν• λ‹Ήν•˜κΈ° λ•Œλ¬Έμ— 아이디 값이 λ˜‘κ°™κ²Œ λœλ‹€.

μ™œ 이럴까?

νŠœν”Œμ€ ν•œ 번 μƒμ„±λ˜λ©΄ μš”μ†Œκ°€ 바뀔일이 μ—†κΈ° λ•Œλ¬Έμ— 볡사λ₯Ό 해도 객체λ₯Ό ν•˜λ‚˜ 더 μƒμ„±ν•΄μ„œ λ©”λͺ¨λ¦¬ λ‚­λΉ„λ₯Ό 쀄이고 μ£Όμ†Œλ₯Ό μ°Έμ‘°ν•˜λŠ” 방식을 μ·¨ν•˜λŠ” 것 κ°™λ‹€.

πŸ“– dictionary & set

생성 방식

  • dictionary
a = dict()
a = {"a": 1}
  • set
b = set()
b = {1,2,3}

setκ³Ό dictionaryλͺ¨λ‘ {} μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•œλ‹€.
ν•˜μ§€λ§Œ dictionaryλŠ” key : valueν˜•νƒœλ‘œ λ˜μ–΄μžˆκ³  set은 μ•„λ‹ˆλ‹€.

set와 dictionaryλŠ” μ€‘κ΄„ν˜Έλ₯Ό μ“΄λ‹€λŠ”κ±° λΉΌκ³ λŠ” λΉ„μŠ·ν•œμ μ΄ 거의 μ—†λ‹€.

ꡬ성 μš”μ†Œ

  • dictionary

dictionaryλŠ” key: valueμŒμ„ μš”μ†Œλ‘œ κ°–λŠ”λ‹€.

a = {"a" :  1, "b" : 2}
  • set

set은 쀑볡이 μ—†λŠ” μš”μ†Œλ“€λ‘œλ§Œ μ΄λ£¨μ–΄μ Έμžˆλ‹€.

a = {3,3,2,2,1,1,}
print(a)

>>> {1,2,3}

쑰회

  • dictionary

dictionary ν‚€λ₯Ό 가지고 μ‘°νšŒν•  수 μžˆλ‹€.

a = {"a" :  1, "b" : 2}
print(a["a"])

>>> 1

print(a["b"])
>>> 2

ν‚€λ‘œ in 연산을 ν•  수 μžˆλ‹€.

a = {"a" :  1, "b" : 2}
print("a" in a)

>>> True
  • set

set은 λ”•μ…”λ„ˆλ¦¬μ²˜λŸΌ 인덱싱 μ‘°νšŒλ„ μ•ˆλ˜κ³  μ˜€λ‘œμ§€ inμ—°μ‚°μœΌλ‘œ 포함 μ—¬λΆ€λ§Œ μ‘°νšŒν•  수 μžˆλ‹€.

a = {1,2,3}
print(1 in a)

>>> True

print(4 in a)

>>> False

μ‚½μž… μ‚­μ œ

  • dictionary

μ‚½μž…λ˜ν•œ keyλ₯Ό 가지고 ν•œλ‹€.

a = {"a" :  1, "b" : 2}
a["c"] = 3
print(a)

>>> a = {"a" :  1, "b" : 2, "c" : 3}

setdefault() ν•¨μˆ˜λ‘œλ„ μΆ”κ°€ν•  수 μžˆλ‹€.
ν‚€ 값이 μ€‘λ³΅λ˜λ©΄ μ μš©λ˜μ§€ μ•ŠλŠ”λ‹€.

a = {"a" :  1, "b" : 2}
a.setdefault("c" , 3)

print(a)

>>> a = {"a" :  1, "b" : 2, "c" : 3}

a.setdefault("a" , 2)

>>> a = {"a" :  1, "b" : 2, "c" : 3}   -> μ μš©μ•ˆλ¨ 

update() ν•¨μˆ˜λ„ λΉ„μŠ·ν•œ κΈ°λŠ₯을 ν•˜μ§€λ§Œ 킀값이 쀑볡 되면 μˆ˜μ •λœλ‹€.
μΈμžμ— (a=3) μ΄λ ‡κ²Œ μ§€μ •ν•œλ‹€. key=value 킀값에 λ– μ˜΄ν‘œλ₯Ό 뢙이지 μ•Šμ•„λ„λœλ‹€.

a = {"a" :  1, "b" : 2}
a.update(a=3)

print(a)

>>> a = {"a" :  3, "b" : 2}

μ‚­μ œλ„ keyλ₯Ό 가지고 ν•œλ‹€.

a = {"a" :  1, "b" : 2, "c" : 3}
del a["c"]

print(a)

>>> a = {"a" :  1, "b" : 2}

λ˜λŠ” 

a = {"a" :  1, "b" : 2, "c" : 3}
pop(a["c"])

print(a)

>>> a = {"a" :  1, "b" : 2}
  • set

add(κ°’) - 집합에 μƒˆλ‘œμš΄ 값을 μΆ”κ°€ν•œλ‹€. (μ€‘λ³΅λœ 값은 λ¬΄μ‹œ)

a = {1,2,3}

a.add(4)

print(a)

>>> {1, 2, 3, 4}

remove(κ°’) - 전달받은 값을 μ‚­μ œ (없을 λ•Œ μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό 좜λ ₯)

discard(κ°’) - 전달받은 값을 μ‚­μ œ (없을 λ•Œ κ·Έλƒ₯ λ¬΄μ‹œ)

pop() - μž„μ˜μ˜ 값을 λ¦¬ν„΄ν•˜κ³  μ‚­μ œ

clear() - μ§‘ν•œμ— μžˆλŠ” λͺ¨λ“  값을 μ‚­μ œ

copy() - 집합을 λ³΅μ œν•˜μ—¬ 리턴

profile
λ°°μ›€μ˜ 기둝

0개의 λŒ“κΈ€