TIL #17. PYTHON 기본(5)

김광일·2022년 2월 4일
1

PYTHON

목록 보기
6/13
post-thumbnail

위코드 1주차를 마치고 2주차에 접어들기 전 설날이 껴있어 쉼을 얻을 수 있었다.
일정 자체는 아직까지 괜찮았지만, 오랜만에 먼 거리를 통학하며 종일 공부를 하려니 익숙하지 않아서 그랬던 건지 조금 지쳤었나보다.
설날 동안 시골도 다녀오고 쉼을 좀 얻고 난 후, 다시 공부를 시작해본다!
오늘은 자료구조에 관해 정리해보려한다.

1. LIST [ ]

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에 모두 해당한다.)

(1) 변수이름[index]

: 해당하는 index를 불러온다. index0으로 시작한다.

  • 이 때 정의 되어있는 index에 새로운 값을 입력하게 되면 해당 index의 값은 재정의 된다.
  • list 안에 있는 list를 불러올 땐 변수이름[index][내부 list의 index]를 입력하면 된다.
  • list 안에 있는 dictionary를 불러올 땐 변수이름[index][내부 dictionary의 key]를 입력하면 된다.

(2) 변수이름.append(추가할 내용)

: list의 맨 뒤에 새로운 객체를 추가할 수 있다

(3) len(변수이름)

: list에 속한 요소의 갯수를 확인할 수 잇다 을 입력하면 된다.
이 때 list에 속해 있는 list, dictionary, tuple 은 각각을 하나의 객체로 본다.

(4) 변수이름.pop(index)

: 원하는 index의 내용을 뺄 수 있다. index를 입력하지 않으면 맨 뒤의 객체가 빠지게 된다.

(5) 변수이름[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]

2. TUPLE ( )

tuple은 소괄호() 안에 값을 저장하고, list와는 다르게 한 번 선언되면 수정이 불가능하다. 이러한 성질 탓에 좌표와 같이 변하지 않는 값들을 저장할 때엔 tuple을 사용한다.

my_tuple = (1, 2, 3)
my_tuple[1]  # 2
my_tuple[:2] # (1, 2)

tuple의 요소들을 읽어오는 방법과 slicing하는 방법은 list 와 동일하다.

3. SET { }

set 은 중괄호{}안에 값을 저장한다.
list와 결이 비슷하지만set의 다른 점은

  • set에는 순서가 존재하지 않아서 for문에서 읽어올 때 앞에서부터 순서대로가 아니라 무작위로 나오게 된다.
  • 순서가 없으므로 indexing이 없다. 즉 list[1] 과 같이 몇번째 요소를 읽어올 수 없다.
  • 중복된 값을 저장할 수 없다.

set을 생성하는 방법에는 두가지가 있다.

  • {} 사용
  • set() 사용 - listset로 변환하고 싶을 때 사용한다.
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}

4. DICTIONARY

dictionaryset처럼 {}를 사용하여 선언하지만, keyvalue 값으로 이루어져 있다. 이 keyvalue:를 이용하여 하나로 묶고, , 를 이용하여 각각의 keyvalue를 구분한다.

my_dict = {
	"이름" : "김광일",
    "나이" : 29,
    "취미" : ["등산", "음악감상", "여행"],
    "초중고" : {
    	"초등학교" : "동수초등학교"
        "중학교" : "부평동중학교"
    }
}

(1) 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"}

(2) dictionary의 요소 수정 및 삭제하기

: list와 방식은 비슷하지만 key를 사용하여 수정 및 추가를 할 수 있다.

my_dict = { }
my_dict[1] = "one"
my_dict["name"] = "gwangil"
> { 1 : "one", "name" : "gwangil"}

del my_dict[1]
> {"name" : "gwangil"}
profile
부족함 없이 공부하자

0개의 댓글