[엘리스 AI 7기 프리트랙] 05. 기본 자료형 II

bee·2023년 1월 30일
0
post-thumbnail

해당 시리즈의 모든 내용은 국비지원 부트캠프 '엘리스 AI 7기' 이호준 선생님의 AI 프리트랙 강의를 수강하며 수업 내용을 정리한 것 입니다.

1. 문자열/리스트 활용

1) list.pop(i)

인덱스 i의 원소를 제거한 후 그 원소를 반환해준다.
(괄호 안을 비울 시 마지막 원소를 가리킨다.)

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

2) seq.count(d)

시퀀스 내부의 자료 d의 개수를 반환한다.

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

3) str.split(c)

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

>>> my_str = "1 2 3 4 5"
>>> print(my_str.split()) # 공백 기준
['1', '2', '3', '4', '5']

>>> element = "Na, Mg, Al, Si"
>>> print(element.split(',')) # 콤마 기준
['Na', 'Mg', 'Al', 'Si']

4) str.join(list)

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

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

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

[실습] pop, count

# my_list를 [1, 2, 3]으로 만들기
>>> my_list = [1, 2, 2, 3, 3, 3]
>>> var1 = my_list.count(3)
>>> my_list.pop() # 맨 마지막 3제거
>>> my_list.pop() # 맨 마지막 3제거
>>> my_list.pop(1) # 2 제거
>>> print(my_list)
[1, 2, 3]

[실습] split, join

>>> my_str = "beetea"
>>> print(my_str.split('e'))
['b', ' ', 't', 'a'] # 'e' 와 'e' 사이에는 아무것도 없으므로 공백을 출력한다.

>>> my_list = ["Seeing", "is", "Believing"]
>>> print(" ".join(my_list))
Seeing is Believing

[실습] 노래가사 분석

>>> lyrics = "낙엽을,닮은,너의,눈동자를,나는,정말,정말,좋아했었어,가을을,닮은,너의,목소리를,나는,아직,아직,잊지,못했어,같이,걸으면서,들었던,낙엽,소리가,내,귓가에,들려오는,것만,같아,함께,앉아,있던,좁다란,나무,벤치엔,너의,온기가,남아있는,것만,같아,낙엽을,닮은,너의,눈동자를,나는,정말,정말,좋아했었어,가을을,닮은,너의,목소리를,나는,아직,아직,잊지,못했어"
>>> a = lyrics.split(',')
>>> print(a[45])
'좋아했었어'

2. 튜플 (tuple)

튜플의 필요성

여러 자료를 담는 자료형이 필요할 때는 대부분 리스트를 이용하지만, 리스트는 값이 바뀔 위험이 있다. 이를 해결하기 위해서는 튜플을 이용하면 된다.

# 리스트의 위험성
>>> my_list = ['l', 'i', 's', 't']
>>> my_list[1] = 'a'
>>> print(my_list)
['l', 'a', 's', 't']

튜플이란?

  • 여러 자료를 함께 담을 수 있는 자료형으로 소괄호 ()로 묶어서 표현한다.
  • 값이 하나밖에 없는 튜플을 만들고 싶다면 마지막에 콤마(,)를 붙여서 하나임을 나타내야한다.
  • 괄호가 없어도 파이썬은 알아서 튜플로 인식한다.
>>> tuple_zero = ()
>>> tuple_one = (1,)
>>> tuple_ = (1, 2, 3, 4, 5)
>>> typle_ = 1, 2, 3, 4, 5

튜플의 특징

  • 시퀀스 자료형으로 인덱스를 이용한 인덱싱과 슬라이싱이 가능하다.
>>> my_tuple = ('t', 'w', 'i', 'c', 'e')
>>> print(my_tuple[1])
'w'
>>> print(my_tuple[2:4]) # 2번쨰, 3번째 인덱스의 자료를 튜플로 출력
('i', 'c')
  • in 연산자로 튜플 안에 원소를 확인할 수 있다.
  • len() 함수로 튜플의 길이를 확인할 수 있다.
>>> my_tuple = ('t', 'w', 'i', 'c', 'e')
>>> print('t' in my_tuple)
True
>>> print(len(my_tuple))
5
  • + 연산자로 튜플과 튜플을 연결할 수 있다.
  • * 연산자로 튜플을 반복할 수 있다.
>>> my_tuple = ('i', 'c', 'e')
>>> print(('e', 'l') + my_tuple)
(e', 'l', 'i', 'c', 'e')
>>> print(my_tuple * 2)
('i', 'c', 'e', 'i', 'c', 'e')
  • 자료의 추가, 삭제, 변경이 불가능하다. (한 번 만들어지면 고정)
>>> my_tuple = ('t', 'w', 'i', 'c', 'e')
>>> print(my_tuple.append('!')) # 자료 추가 X
Error
>>> print(my_tuple.remove('w')) # 자료 삭제 X
Error
>>> my_tuple[1] = 's' # 자료 변경 X
Error

[실습] Tuple 만들기

>>> my_tuple = (1, 2, 3, 4, 5)
>>> var1 = my_tuple[2]
>>> var2 = my_tuple[1:4] # 1번째, 2번째, 3번째 원소 출력
>>> var3 = len(my_tuple)
>>> print(var1, var2, var3)
3 (2, 3, 4) 5

[실습] Tuple vs List

  • try ~ except
    try: 안의 명령을 실행하다가 오류가 발생하면 except 오류명 : 구문을 실행한다.
>>> my_tuple = (1, 2, 3)
>>> try:
    #여기에 인덱싱을 이용해서 Tuple의 값을 변경해봅시다.
    my_tuple[2] = 5    
>>> except TypeError:
    	print("Tuple은 값을 변경할 수 없습니다.")
Tuple은 값을 변경할 수 없습니다.
    
>>> try:
    #여기에 .append()를 이용해서 Tuple의 값을 추가해봅시다.
    my_tuple.append(6)    
>>> except AttributeError:
 	   print("Tuple은 값을 추가할 수 없습니다.")
Tuple은 값을 추가할 수 없습니다.

>>> print(my_tuple)
(1, 2, 3)

3. 딕셔너리 (dictionary)

딕셔너리란?

  • 짝꿍이 있는 자료형으로, 중괄호 {}로 묶어서 표현한다.
  • {key : value}의 형식 : key를 알면 value를 알 수 있다.
>>> dict_zero = {}
>>> person = {'name':'Michael', 'age':10}

Key

: 열쇠처럼 자료를 꺼낼 수 있는 '도구'

Value

: 딕셔너리에서 Key로 꺼낸 '자료'

Dictionary[key]

(1) 딕셔너리에서 자료 꺼내기

>>> person = {'name':'Michael', 'age':10}
>>> print(person['name'])
Michael
>>> print(person['age'])
10

(2) 딕셔너리에서 자료 추가하기

>>> person = {'name':'Michael', 'age':10}
>>> person['hometown'] = 'Seoul'

(3) 딕셔너리의 원소(key + value) 삭제하기 :del 함수 활용

>>> person = {'name':'Michael', 'age':10}
>>> del person['age']
>>> print(person)
{'name':'Michael'}

딕셔너리의 특징

  • Key는 변할수 없는 자료형 이어야 한다. (리스트 X, 튜플 O)
>>> dates = {[1, 2, 3] : 'Alphabet'} # 리스트 X
Error

>>> dates = {(1, 2, 3) : 'Number'} # 튜플 O

[실습] Dictionary 만들기

>>> my_dict = {'사과':'apple', '바나나':'banana', '당근':'carrot'}
>>> var1 = my_dict['사과']

>>> del my_dict['당근']
>>> print(my_dict)
{'사과':'apple', '바나나':'banana'}

>>> my_dict['체리'] = 'cherry'
>>> print(my_dict)
{'사과':'apple', '바나나':'banana', '체리':'cherry'}

[실습] Dictionary의 Key

>>> my_dict = {}
>>> my_dict[1] = "Integer"
>>> my_dict['a'] = "String"
>>> my_dict[(1, 2, 3)] = "Tuple"

>>> try:
    	#여기에 [1, 2, 3] → "List"의 대응관계를 만들어봅시다.
    	my_dict[[1, 2, 3]] = "List"
    
>>> except TypeError:
    	print("List는 Dictionary의 Key가 될 수 없습니다.")
List는 Dictionary의 Key가 될 수 없습니다.
profile
벌집처럼 밀도있게 차곡차곡 쌓아나가는중

0개의 댓글