파이썬의 자료구조인 리스트, 사전, 튜플, 세트에 대해 공부한 내용을 작성해보려 한다.
여러 데이터를 대괄호를 사용하여 하나의 변수에 묶어 관리 할 수 있다.
people1 = 10 people2 = 20 people3 = 30 subway1 = [40, 50, 60] subway2 = [people1, people2, people3] print(subway1) # [40, 50, 60] print(subway2) # [10, 20, 30]
인자와 일치하는 값의 인덱스 값을 리턴한지만, 일치하는 값이 없을 경우
ValueError
를 일으킨다.subway = [40, 50, 60] print(subway.index(50)) # 1
리스트에 인자를 추가한다.
subway = [40, 50, 60] subway.append(10) print(subway) # [40, 50, 60, 10]
리스트의 인덱스 위치에 원하는 값을 추가한다.
첫 번째 인자에는 인덱스 위치를,
두 번째 인자에는 추가하고자 하는 값.subway = [40, 50, 60] subway.insert(1, 50) print(subway) # [40, 50, 50, 60]
리스트의 마지막 값을 삭제하고 삭제한 값을 리턴한다.
subway = [40, 50, 60] print(subway.pop()) # 60 print(subway) # [40, 50]
리스트에 중첩되지 않고 등장하는 횟수를 리턴한다.
subway = [40, 50, 60] print(subway.count(40)) # 1
리스트를 오름차순으로 정렬한다.
reverse
키워드를True
값으로 지정하면 내림차순으로 정렬된다.num_list = [5, 2, 4, 3, 1] num_list.sort() print(num_list) # [1, 2, 3, 4, 5] num_list.sort(reverse=True) print(num_list) # [5, 4, 3, 2, 1]
리스트의 순서를 뒤집는다.
num_list = [5, 2, 4, 3, 1] num_list.reverse() print(num_list) # [1, 3, 4, 2, 5]
리스트의 내용을 초기화한다.
num_list = [5, 2, 4, 3, 1] num_list.clear() print(num_list) # []
다른 리스트를 추가한다.
num_list = [5,2,4,3,1] mix_list = ["조세호", 20, True] num_list.extend(mix_list) print(num_list) # [5, 2, 4, 3, 1, '조세호', 20, True]
사전 자료형은 Javascript의 객체처럼 {}
를 사용하여 변수의 할당한다.
리스트와 다르게 사전은 Key
와 Value
로 이루어져있다.
cabinet = {3:"유재석", 100:"김태호"} print(cabinet[3]) # "유재석" print(cabinet[100]) # "김태호"
in
in
키워드를 사용하여 사전 키의 선언 여부를boolean
값으로 리턴한다.cabinet = {3:"유재석", 100:"김태호"} print(3 in cabinet) # True print(5 in cabinet) # False
del
del
키워드를 사용하여 사전 키를 삭제 할 수 있다.cabinet = {3:"유재석", 100:"김태호"} del cabinet[3] print(cabinet) # {100:"김태호"}
사전에 해당 키의 벨류 값을 리턴한다.
또한 새로운 벨류 값을 할당 할 수 있다.cabinet = {3:"유재석", 100:"김태호"} print(cabinet.get(3)) # "유재석" print(cabinet.get(5, "사용 가능")) # "사용 가능"
사전의 모든 키 값을
dict_keys
타입으로 리턴한다.cabinet = {3:"유재석", 100:"김태호"} print(cabinet.keys()) # dict_keys([3, 100])
사전의 모든 벨류 값을
dict_values
타입으로 리턴한다.cabinet = {3:"유재석", 100:"김태호"} print(cabinet.values()) # dict_values(["유재석", "김태호"])
사전의 모든 키 와 벨류 값을
dict_items
타입으로 리턴한다.cabinet = {3:"유재석", 100:"김태호"} print(cabinet.items()) # dict_items([(3, "유재석"), (100, "김태호")])
사전의 내용을 초기화한다.
cabinet = {3:"유재석", 100:"김태호"} cabinet.clear() print(cabinet) # {}
리스트와 같은 역할이지만 한번 선언되면 수정이 불가능한 불변 시퀀스이다.
상대적으로 속도가 빠르고 데이터를 소괄호로 묶어 할당한다.
menu = ("돈까스", "치즈까스") print(menu[0]) # "돈까스" print(menu[1]) # "치즈까스"
하나의 변수 말고도 여러 변수에 선언 및 할당도 가능하다. 이 때는 수정이 가능하다.
(name, age, hobby) = ("김종국", 20, "코딩") print(name, age, hobby) # "김종국", 20, "코딩" name = "유재석" print(name) # "유재석"
Javascript
의 Set
메소드와 유사하다.
중괄호를 사용하여 데이터를 묶고, 데이터가 중복되지 않는다.
세트 선언에는 두가지 방법이 있다.
중괄호를 사용하여 선언하는 방법과 set
키워드를 사용하여 선언하는 방법이 있다.
set
키워드를 사용 할 때에는 인자에 리스트나 튜플 형식으로 넣어 주어야 한다.
java = {"유재석", "김태호", "양세형"} python = set(["유재석", "박명수"]) print(java) # {"유재석", "김태호", "양세형"} print(python) # {"유재석", "박명수"}
세트를 사용하여 집합을 표현 할 수 있다.
&
연산자 또는 세트의 내장함수인intersection()
함수를 사용한다.java = {"유재석", "김태호", "양세형"} python = {"유재석", "박명수"} print(java & python) # {"유재석"} print(java.intersection(python)) # {"유재석"}
|
연산자 또는union()
함수를 사용한다.java = {"유재석", "김태호", "양세형"} python = {"유재석", "박명수"} print(java | python) # {"박명수", "양세형", "유재석", "김태호"} print(java.union(python)) # {"박명수", "양세형", "유재석", "김태호"}
-
연산자 또는difference()
함수를 사용한다.java = {"유재석", "김태호", "양세형"} python = {"유재석", "박명수"} print(java - python) # {"양세형", "김태호"} print(java.difference(python)) # {"양세형", "김태호"}
세트에 해당 인자를 추가한다.
python = {"유재석", "박명수"} python.add("김태호") print(python) # {"박명수", "유재석", "김태호"}
세트에 해당 인자를 삭제한다.
python = {"유재석", "박명수"} python.remove("박명수") print(python) # {"유재석"}
list
tuple
set
키워드를 사용하여 변수의 타입을 변경 할 수 있다.
menu = {"커피", "우유", "주스"} print(menu, type(menu)) # {"커피", "우유", "주스"} <class "set"> menu = list(menu) print(menu, type(menu)) # ["커피", "우유", "주스"] <class "list"> menu = tuple(menu) print(menu, type(menu)) # ("커피", "우유", "주스") <class "tuple"> menu = set(menu) print(menu, type(menu)) # {"커피", "우유", "주스"} <class "set">