본문 바로가기
자습

[/*elice*/] 05. 기초 자료형 (튜플/ 딕셔너리) -인공지능 활용을 위한 파이썬 기초

by 빵으니 2020. 11. 7.

[이론 1] 문자열/리스트 활용

- append()

- remove()

- sort()

- insert() 

외에 활용 방법

 

# list.pop(i)

- 인덱스 i의 원소를 제거 후 그 원소를 반환 (괄호를 비울 시 마지막 원소)

ex) my_list = [1,2,3,4,5] =>  my_list.pop(0)  # 1 / my_list.pop( )  # 5

 

# seq.count(d)

- 시퀀스 내부의 자료 d의 개수를 반환

ex) my_seq = [2,2,2,4,4] => my_seq.count(2)  # 3

 

# str.split(c)

- c를 기준으로 문자열을 쪼개서 리스트로 반환 (괄호를 비울 시 공백)

ex) element = 'Na,Mg,Al,Si' => element.split(,)   # ['Na', 'Mg', 'Al', 'Si']

** 문자열을 리스트로

 

# str.join(list)

- str을 기준으로 리스트를 합쳐서 문자열을 반환 (괄호를 비울 시 공백)

ex) my_list = ['a', 'p', 'p', 'l', 'e'] => ''.join(my_list)  # apple

     friend = ['Pat', 'Mat'] => '&'.join(friend)  #Pat&Mat

** 리스트를 문자열로

 

실습! 숫자 3의 갯수 변수에 담고/ my_list를 [1,2,3]으로 만들기
실습! e를 기준으로 나누기 / 공백을 기준으로 붙이기

 

실습! 문자열 lyrics를 콤마를 기준으로 나누어 리스트로 만들기 / 이 리스트의 46번째 구절 출력하기

 

[이론 2] 튜플

- 여러 자료를 담는 자료형이 필요하다면? -> 대부분 리스트를 이용 but 값이 바뀔 위험이 있다.

    - 리스트안의 원소들을 추가, 제거, 변경할 수 있으므로

 ex) my_list = ['l',' 'i', 's', 't']

     my_list[1] = 'a'

     print(my_list)  # ['l',' 'a', 's', 't']

 

# 튜플(Tuple)의 필요성

- 값을 바꿀 수 없으면서도 여러 자료를 담기 위함!

 

# 튜플

- 여러 자료를 함꼐 담을 수 있는 자료형

- ( ) 소괄호로 묶어서 표현

 

# 튜플의 특징

- 튜플은 시퀀스 자료형으로 index를 이용한 인덱싱, 슬라이싱이 가능

- in 연산자로 Tuple 안에 원소 확인

- len() 함수로 Tuple의 길이 확인

- + 연산자로 Tuple과 Tuple을 연결

- * 연산자로 Tuple을 반복

- 여기까진 튜플과 리스트의 특징이 같으나

Tuple은 자료가 추가, 삭제, 변경되지 않는다. 한 번 만들어지면 고정 됨!

튜플과 리스트 차이 확인하기  **try/except는 예외처리구문 (try문 안에 있는 내용을 실행하다가, 오류 발생하면 except문 안에 있는 내용 실행)

 

[이론 2] 딕셔너리(Dictionary)

- 짝꿍이 있는 자료형!

- { } 중괄호로 묶어서 표현

- {key : value} 형태 : key를 알면 value를 알 수 있음

- key는 열쇠처럼 자료를 꺼낼 수 있는 도구

 

# Dictionary[key]

- 인덱싱처럼 key를 이용해 Dictionary에서 자료 꺼내기

- 인덱싱처럼 key를 이용해 Dictionary에 자료 추가하기

  ex) person = {'name':'Michael', 'age':10}

       person['hometown'] = 'Seoul'    => 변수를 할당하는 것 처럼 넣어준다

       -> dict   -> key           ->value

 

# del

- del 함수로 Dictionary의 원소 삭제

  ex) person = {'name':'Michael', 'age':10}

       del person['age']

             -> dict   -> key     

 

# Dictionary의 특징

- Key는 변할 수 없는 자료형이어함!

- 그러므로 list는 key가 될 수 없고 , tuple은 key가 될 수 있다

  ex) data = { [1,2,3] : 'Alphabel'}  # Error

       data = { (1,2,3) : 'Number'}   # OK 

 

- 또한, 2개 이상의 동일한 Key가 있어선 안 됨

dict에는 여러가지 자료형이 들어갈 수 있지만 list는 안 된다! list는 변할 수 있기 때문에!!!

 

실습! 딕셔너리와 for문을 활용해 미니언즈언어 해석하기


[총 정리]

1. 시퀀스 활용하기

Point I
list.pop(i) : 인덱스 i의 원소를 제거  반환

lst = [1, 2, 3, 4, 5] box = lst.pop(0) # lst에서 1을 제거 후 반환, 이 경우에는 변수 box에 대입 print(lst) # [2, 3, 4, 5] print(box) # 1

Point II
seq.count(d) : 시퀀스 내부의 자료 d의 개수를 반환

carrot = "Hi Rabbit!"

print(carrot.count("i")) ## 실행 결과

## 2

Point III
str.split(c) : 문자열 c를 기준으로 문자열 str을 쪼개서 리스트를 반환

ours = "나,너,우리"

print(ours.split(","))

# ['나', '너', '우리']

Point IV
str.join(list) : str을 기준으로 list를 합쳐서 문자열을 반환

coffee = ['a', 'm', 'e', 'r', 'i', 'c', 'a', 'n', 'o']

print("".join(coffee)) # 빈 문자열("")을 기준으로 합치기

# americano

2. Tuple(튜플)

Point I
여러 자료를 담을 수 있으면서, 변하지 않는 자료형

Point II
() - 소괄호로 묶어 표현

tup = (1, 2, 3, 4, 5)

Point III
원소가 하나라면 반드시 원소 뒤에 ,을 적어주어야함

tup_one = (1,)

Point IV
시퀀스 자료형의 성질을 지님

cute = ('c', 'a', 't')

print(cute[1]) #인덱싱

#'a'

print(cute[1:]) #슬라이싱

#('a', 't')

print('e' in cute) #in연산자

#False

print(len(cute)) #len연산자

#3

print(cute + ('e', 'g', 'o', 'r', 'y')) #연결연산

#('c', 'a', 't', 'e', 'g', 'o', 'r', 'y')

print(cute * 3) #반복연산

#('c', 'a', 't', 'c', 'a', 't', 'c', 'a', 't')

 

Point V

자료를 추가, 삭제, 변경할 수 없다!

hero = ("ant", "man") hero.append("wasp") #Error

hero.remove("man") #Error

hero[0] = "iron" #Error

3. Dictionary(사전형)

Point I
짝꿍(Key → Value)이 있는 자료형

Point II
{} - 중괄호로 묶어서 표현

hp = {"gildong" : "010-1234-5678"}

Point III
key를 알면 value를 알 수 있다.

dic = {"apple":"사과", "banana":"바나나"}

print(dic["apple"]) # 사과

Point IV
del 키워드로 Dictionary의 원소 삭제
리스트의 원소를 삭제하는 것도 가능!

dic = {"apple":"사과", "banana":"바나나"}

del dic["apple"]

print(dic) # {"banana":"바나나"}

Point V
Key는 변할 수 없는 자료형이여야 한다

dic = {[1, 3, 5]:"odd"} #Error

dic = {(2, 4, 6):"even"}

댓글