위코드 1주차를 마치고 2주차에 접어들기 전 설날이 껴있어 쉼을 얻을 수 있었다.
일정 자체는 아직까지 괜찮았지만, 오랜만에 먼 거리를 통학하며 종일 공부를 하려니 익숙하지 않아서 그랬던 건지 조금 지쳤었나보다.
설날 동안 시골도 다녀오고 쉼을 좀 얻고 난 후, 다시 공부를 시작해본다!
오늘은 자료구조에 관해 정리해보려한다.
list
는 대괄호[]
안에 원하는 값들을 나열하는 방식으로 생성할 수 있고, 각각의 값들은 쉼표(,
)를 사용하여 구분한다. 그리고 이 값들은 element
라고 한다.
my_list = [1, 2, 3, "gwangil", {"name" : "gwangil", "hobbies" : "hiking"}, [4, 5, 6], (1, 2, 3), True]
my_list[0] # 1
my_list[1] # 2
my_list[2] # 3
my_list[3] # gwangil
my_list[4] # {"name" : "gwangil", "hobbies" : "hiking"}
my_list[4]["hobbies"] # hiking
my_list[5] # [4, 5, 6]
my_list[5][0] # 4
my_list[6] # (1, 2, 3)
my_list[6][1] # 2
my_list[7] # True
my_list[0] = 7
my_list[0] # 7
위의 예시처럼 int
, string
, list
, dictionary
, tuple
, boolean
의 다양한 타입의 요소들이 다 들어갈 수 있다.
( 이는 아래에서 다룰 tuple
, set
, dictionary
에 모두 해당한다.)
변수이름[index]
: 해당하는 index
를 불러온다. index
는 0
으로 시작한다.
index
에 새로운 값을 입력하게 되면 해당 index
의 값은 재정의 된다.list
안에 있는 list
를 불러올 땐 변수이름[index][내부 list의 index]
를 입력하면 된다.list
안에 있는 dictionary
를 불러올 땐 변수이름[index][내부 dictionary의 key]
를 입력하면 된다.변수이름.append(추가할 내용)
: list
의 맨 뒤에 새로운 객체를 추가할 수 있다
len(변수이름)
: list
에 속한 요소의 갯수를 확인할 수 잇다 을 입력하면 된다.
이 때 list
에 속해 있는 list
, dictionary
, tuple
은 각각을 하나의 객체로 본다.
변수이름.pop(index)
: 원하는 index
의 내용을 뺄 수 있다. index
를 입력하지 않으면 맨 뒤의 객체가 빠지게 된다.
변수이름[start_index:end_index]
(slicing): start_index
부터 end_index - 1
까지의 객체를 하나로 묶어 잘라낸다.
start_index
를 입력하지 않으면 처음 객체가 시작이 된다.end_index
를 입력하지 않으면 마지막 객체가 끝이 된다.[ : ]
처음과 끝을 둘 다 입력하지 않으면 처음부터 끝까지 선택한다. my_list = [1, 2, 3]
my_list.append("4") # my_list = [1, 2, 3, 4]
len(my_list) # 4
my_list.pop() # my_list = [1, 2, 3]
my_list[:2] # 0번부터 1번까지 [1, 2]
tuple
은 소괄호()
안에 값을 저장하고, list
와는 다르게 한 번 선언되면 수정이 불가능하다. 이러한 성질 탓에 좌표와 같이 변하지 않는 값들을 저장할 때엔 tuple
을 사용한다.
my_tuple = (1, 2, 3)
my_tuple[1] # 2
my_tuple[:2] # (1, 2)
tuple
의 요소들을 읽어오는 방법과 slicing
하는 방법은 list
와 동일하다.
set
은 중괄호{}
안에 값을 저장한다.
list
와 결이 비슷하지만set
의 다른 점은
set
에는 순서가 존재하지 않아서 for
문에서 읽어올 때 앞에서부터 순서대로가 아니라 무작위로 나오게 된다.indexing
이 없다. 즉 list[1]
과 같이 몇번째 요소를 읽어올 수 없다.set
을 생성하는 방법에는 두가지가 있다.
{}
사용set()
사용 - list
를 set
로 변환하고 싶을 때 사용한다.my_set = {1, 2, 3, 1, 2}
print(my_set)
> {1, 2, 3}
my_set_2 = set([1, 2, 3, 1, 2])
print(my_set_2)
> {1, 2, 3}
위에서 언급했듯 set
에는 순서가 없기 때문에 추가하고 지울 때append()
나 pop()
대신 add()
, remove()
를 사용한다.
my_set = {1, 2, 3}
my_set.add(4) # my_set = {1, 2, 3, 4}
my_set.remove(1) # my_set = {2, 3, 4}
dictionary
는 set
처럼 {}
를 사용하여 선언하지만, key
와 value
값으로 이루어져 있다. 이 key
와 value
는 :
를 이용하여 하나로 묶고, ,
를 이용하여 각각의 key
와 value
를 구분한다.
my_dict = {
"이름" : "김광일",
"나이" : 29,
"취미" : ["등산", "음악감상", "여행"],
"초중고" : {
"초등학교" : "동수초등학교"
"중학교" : "부평동중학교"
}
}
dictionary
의 요소 읽어오기: list
와 다르게 index
가 존재하기 않기 때문에 key
를 사용하여 불러온다. 변수이름[key]
으로 불러온다.
key
부분에는 string
뿐 아니라 int
도 가능하다.key
값은 중복 될 수 없기 때문에 key
의 값이 추가가 되면 기존의 key
값이 새로운 key
값으로 치환하게 된다.my_dict = {
1 : "one",
"name" : "gwangil",
"name" : "gwangtwo"
}
my_dict["name"] # "gwangtwo"
print(my_dict)
> { 1 : "one", "name" : "gwangtwo"}
dictionary
의 요소 수정 및 삭제하기: list
와 방식은 비슷하지만 key
를 사용하여 수정 및 추가를 할 수 있다.
my_dict = { }
my_dict[1] = "one"
my_dict["name"] = "gwangil"
> { 1 : "one", "name" : "gwangil"}
del my_dict[1]
> {"name" : "gwangil"}