[Python_basic]list, dictionary, tuple, set

Ronie🌊·2021년 1월 8일
0

Python👨🏻‍💻

목록 보기
3/11
post-thumbnail

git 바로가기


자료구조 구분
list
dictionary
tuple
set

자료구조 구분

listdictionaryturpleset
설명순서대로 정리된 항목들을 담는 자료구조key와 value로 구성되는 자료구조리스트와 비슷하지만 수정이나 삭제가 불가능하여 비정적인 객체를 담는데 사용중복을 허용하지 않으며, 순서가 없는 자료구조
자료구조
변환
mutable
(가변성)
mutable
(가변성)
immutable
(불변성)
mutable
(가변성)
상황데이터수정, 순서가 필요한경우상황에 따라데이터의 읽기만 필요한경우중복된값을 불허하는경우, 순서가 불필요한 경우

list

  • 튜플과 비교가 많이되며, 튜플과의 가장 큰 차이점은 요소를 삭제하거나 변경가능
  • 튜플과 마찬가지로 리스트 + 리스트 형식으로 요소를 추가 가능
  • 또한, 다른 type의 데이터들을 담을 수 있음 ['a', 1, 3] 이런 식으로
#['Tom', 'George', 'Dan']
subway =["Tom","George","Dan"]
print(subway.index("George"))
#['Tom', 'George', 'Dan', 'Haha']
subway.append("Haha")
print(subway)
#['Tom', 'George', 'Dan', 'Haha']
subway.insert(1, "Joe")
print(subway)

print(subway.pop())
print(subway)
print(subway.count("Tom"))

num_list = [5,3,1,2,4,1]
num_list.sort() #.reverse() .clear()
print(num_list)
mix_list=["Tom", 20, True]
num_list.extend(mix_list)
print(num_list)
출력결과
1
['Tom', 'George', 'Dan', 'Haha']
['Tom', 'Joe', 'George', 'Dan', 'Haha']
Haha
['Tom', 'Joe', 'George', 'Dan']
1
[1, 1, 2, 3, 4, 5]
[1, 1, 2, 3, 4, 5, 'Tom', 20, True]

dictionary

  • 딕셔너리를 구현한 클래스는 셋(set)
    따라서, 딕셔너리는 셋처럼 중복이 불가능한 collection 자료형이고, mutable(가변성) 하며,
  • key : value 라는 독특하고 유용한 구조로 이루어짐
    중복이 불가능하다는 뜻은 key값들 끼리 중복이 불가능 하다는 뜻
  • a라는 딕셔너리가 있을때 keys나 values 메소드를 활용하여 key나 value값 확인가능. key와 value를 모두 확인하고 싶을 때는 items 메소드를 사용
  • (참고) B = {'a' : [1]}라는 딕셔너리는 value가 list 형태이므로 B['a'].append or B['a'].remove 가 가능
cabinet = {3:"Tombson", 100:"Harry"}
print(cabinet[3])
print(cabinet.get(100))

#print(cabinet[5]) #Error, there is not exist key about "5"
print(cabinet.get(5)) #not Error, result "None"
print(cabinet.get(5,"there is not key")) #not Error, result "there is not key"

print(3 in cabinet) #True
print(5 in cabinet) #False

del cabinet[3]
print(cabinet)
print(cabinet.keys()) #cabinet.calues() cabinet.items()
출력결과
Tombson
Harry
None
there is not key
True
False
{100: 'Harry'}
dict_keys([100])

tuple

  • 리스트와 비교가 많이되며, 리스트와의 가장 큰 차이점은 요소를 삭제하거나 변경할 수 없다는 것.
  • 이를 immutable(불변성) 이라고 표현함, iterable 함
  • 리스트는 append, remove 메소드로 요소들을 추가하거나 삭제할 수 있지만 튜플은 이러한 메소드가 없음
  • 튜플 + 튜플 형식으로 요소를 추가할 수는 있으며, 삭제도 indexing을 통해서 삭제하고자 하는 요소의 index를 선택하지 않으면 가능하다.
  • But, 위와 같은 방식은 억지로(?) append나 remove가 된 것 처럼 한 것이라 할 수 있음
  • 리시트에서는 예를 들어 a라는 리스트가 있을 때, a 자체를 변화를 줄 수 있지만,
  • 튜플은 a라는 튜플 b라는 튜플이 있을때 c = a + b 형식으로 새로운 변수에 할당하는 방식으로 append와 결과적으로만 동일한 튜플을 만들 수 있는 것이다.
  • 또한, 다른 type의 데이터들을 담을 수 있음 ('a', 1, 3) 이런 식으로
# the same list, but cant revise, more fast than list
menu = ("donnkatsu","cheese katsu")
print(menu[0])
#menu.add("fish katsu") #cant use add
출력결과
donnkatsu

set

  • 셋은 순서가 없는 중복이 불가능한 collection 자료형이다. -> 내장모듈 collections 알아두면 좋음
  • mutable(가변성) 함
  • 요소들 간의 순서가 없음 -> 따라서, indexing이 불가 -> not iterable
  • 중복제거 교집합, 합집합, 차집합 등의 수학적인 계산이 가능
  • 셋은 add(요소 1개 추가), update(여러요소 추가), remove 메소드를 활용하여 요소를 추가/삭제한다.
  • 합집합은 a | b로 표현, 차집합은 a - b로 표현, 교집합은 a & b로 표현
# cant duplicate, order
my_set= {1,2,3,3,3}
print(my_set)
java ={"Tom","Marry"}
python = set(["Tom","Cheese"])
#can java also python
print(java & python)
print(java.intersection(python))
#can java or python
print(java | python)
print(java.union(python))
#can java but cant python
print(java - python)
print(java.difference(python))
#can java.add("") or java.remove("")
출력결과
{1, 2, 3}
{'Tom'}
{'Tom'}
{'Marry', 'Tom', 'Cheese'}
{'Marry', 'Tom', 'Cheese'}
{'Marry'}
{'Marry'}

0개의 댓글