핵심 파이썬 기초 프로그래밍(4)
본 포스팅은 elice의 2021 NIPA AI 온라인 교육을 듣고 개인 공부를 위해 정리한 것입니다.
4. 파이썬에서 자료를 담는 여러가지 방식
1) 리스트 활용하기
list.append(d)
.
append() 맨 앞의.
은 dot access 이다. list의 자료형에서 함수를 사용할 때 dot access 사용
자료 d를 리스트 마지막 원소 뒤에 추가, 오직 한 개의 자료만 넣을 수 있다.
a = []
b = ['a', 'b', 'c']
a.append(10)
b.append('d')
print(a, b)
>>> [10] ['a', 'b', 'c', 'd']
list.index(i, d)
어디에? 무엇을? 추가! list.index(위치, 값)
인덱스 i에 자료 d를 추가, 오직 한 개의 자료만 넣을 수 있다.
인덱스는 0부터 시작한다.
c = [1, 2, 4, 5]
c,insert(2, 3) # 2는 인덱스, 3이 추가할 값
print(c)
>>> [1, 2, 3, 4, 5]
list.remove(d)
어떤 자료를 삭제할 것인가?
처음 나오는 자료 d를 제거, 중복 시 인덱스가 작은 원소 제거!
d = [3, 1, 2, 3]
d.remove(3)
print(d)
>>> [1, 2, 3] # 처음 나오는 3이 사라졌다!
list.sort()
리스트를 정렬
list.sort()의 괄호()
안에 아무것도 없을 때, 즉, 기본형에서 숫자형은 오름차순, 문자열은 사전순
sort 메서드의 reverse 를 True 로 설정하면 역순으로 정렬 가능
e = [6, 2, 4, 1]
f = ['carrot', 'apple', 'banana']
e.sort()
f.sort()
print(e, f)
>>> [1, 2, 4, 6] ['apple', 'banana', 'carrot']
💎주의💎
리스트는 각기 다른 자료형을 담을 수 있지만 리스트를 정렬할 때는 같은 자료형만 가지고
있어야 한다.
e = [6, 2, 4, 1, 'carrot']
e.sort()
print(e)
>>> Traceback (most recent call last): # Error 발생
File "main.py", line 3, in <module>
e.sort()
TypeError: '<' not supported between instances of 'str' and 'int'
참고
- index(x) : 인덱스 내에 x가 있으면 인덱스 값을 반환, 없으면 Error
- pop() : 뒤에서 부터 하나씩 꺼냄
- count(x) : 리스트 내에 x가 몇 개 있는지 그 개수를 반환
- remove(i) : 리스트 인덱스 i에 있는 요소를 제거
- extend(l) : 리스트 마지막에 리스트 l을 추가
실습✍ 리스트에 원소 추가하기
- 빈 리스트 my_list를 하나 선언해봅시다.
- my_list에 숫자 5, 4, 2, 1을 차례대로 넣어봅시다.
my_list = []
my_list.append(5)
my_list.append(4)
my_list.append(2)
my_list.append(1)
print(my_list)
>>> [5, 4, 2, 1]
실습✍ 리스트에 원소 정렬하기
- 숫자 5, 4, 3, 2가 차례대로 담긴 리스트 my_list를 만들어봅시다.
- my_list를 오름차순으로 정렬해봅시다.
my_list = [5, 4, 3, 2]
my_list.sort()
print(my_list)
>>> [2, 3, 4, 5]
2) 시퀀스 자료형이란?
순서가 있는 자료형
시퀀스의 종류 : 리스트, 튜플, 문자열, range
a = "Once" #문자열
b = ['T', 'W', 'I', 'C', 'E'] #리스트
c = (1, 2, 3, 4, 5) #튜플
시퀀스의 특징
1. 원소간의 순서가 존재한다
- 인덱싱/슬라이싱이 가능하다.
- 인덱싱 : 시퀀스의 한 원소를 가져오는 것
- 슬라이싱 : 시퀀스의 일부분을 가져오는 것, 슬라이싱을 하면 슬라이싱 이전 자료형의 특징을 그대로 가져간다. 치즈🧀를 슬라이스하면 치즈🧀!
a = "Once" #문자열
b = ['T', 'W', 'I', 'C', 'E'] #리스트
print(a[1]) # n
print(b[2:4]) # ['I', 'C']
>>> n
['I', 'C']
- 인덱싱/슬라이싱을 할 때 음수를 넣거나, 자리를 비우는 것도 가능!
[-1]
은 뒤에서 첫번째!!![start:end]
앞이 비어있다면 처음부터! 끝이 비어있다면 끝까지!
a = "Once" #문자열
b = ['T', 'W', 'I', 'C', 'E'] #리스트
print(a[-1]) # e : 뒤에서 첫번째 원소
print(b[:3]) # ['T', 'W', 'I'] : 처음 ~ 3번째 슬라이싱
>>> e
['T', 'W', 'I']
2. 멤버 조회
멤버 = 원소
in
연산자로 시퀀스 안에 원소가 있는지 확인 가능
'원소' in 시퀀스
→ True/False 반환
a = "Once" #문자열
b = ['T', 'W', 'I', 'C', 'E'] #리스트
print('O' in a) # 문자열 'O'가 문자열 a에 존재하는가? → True!
print('B' in b) # 문자열 'B'가 리스트 b에 존재하는가? → False!
>>> True False
3. 길이 확인
len
연산자로 시퀀스 안에 원소가 몇 개 인지 확인 가능
a = "Once" #문자열
b = ['T', 'W', 'I', 'C', 'E'] #리스트
print(len(a)) # 4
print(len(b)) # 5
>>> 4
5
4. 연결 연산
+
연산자로 같은 시퀀스 두개를 이어붙일 수 있다.
c = ['t', 'w', 'i'] + ['c', 'e']
print(c)
>>> ['t', 'w', 'i', 'c', 'e']
5. 반복 연산
*
연산자로 시퀀스를 반복할 수 있다.
d = "shy" * 3
print(d)
>>> shyshyshy
실습✍ 시퀀스의 인덱싱과 슬라이싱
- 문자열 "Impossible"이 담긴 변수 my_str을 만들어봅시다.
- 리스트 ["Apple", "Banana", "Chamwae", "Durian"]이 차례대로 담긴 변수 my_list를 만들어봅시다.
- 리스트 my_list에서 인덱싱을 이용해 변수 var1에 "Chamwae"를 넣어봅시다.
- 문자열 my_str에서 슬라이싱을 이용해 변수 var2에 "possible"을 넣어봅시다.
my_str = "Impossible"
my_list = ["Apple", "Banana", "Chamwae", "Durian"]
var1 = my_list[2]
var2 = my_str[2:]
실습✍ 시퀀스의 길이와 멤버 조사하기
- 문자열 "Impossible"이 담긴 변수 my_str을 만들어봅시다.
- 리스트 ["Apple", "Banana", "Chamwae", "Durian"]이 담긴 변수 my_list를 만들어봅시다.
- len을 이용해서 변수 var1에 my_str의 길이를 넣어봅시다.
- in을 이용해서 "Egg"가 my_list에 들어있는지 확인하고, 이 결과(True or False)를 변수 var2에 넣어봅시다.
my_str = "Impossible"
my_list = ["Apple", "Banana", "Chamwae", "Durian"]
var1 = len(my_str) # 10
var2 = "Egg" in my_list # False
print(var1, var2)
>>> 10 Flase
3) Dictionary(사전)
짝꿍이 있는 자료형! 진짜 사전을 생각해봐😃
중괄호{}
로 묶어서 표현, {key : value}의 형식 : key를 알면 value를 알 수 있음
- key : 열쇠처럼 자료를 꺼낼 수 있는 도구
- value : Dictionary에서 Key로 꺼낸 자료
dict_zero = {}
person = {'name':'Michael', 'age':10}
Dictionary[key]
인덱싱과 유사
- Dictionary에서 자료 꺼내기
person = {'name':'Michael', 'age':10}
print(person['name']) # Michael
print(person['age']) # 10
>>> Michael
10
- Dictionary에서 자료 추가
person = {'name':'Michael', 'age':10}
person['hometown'] = 'Seoul' # person : Dictionary, 'hometown' : key, 'Seoul' : Value
print(person)
>>> {'name':'Michael', 'age':10, 'hometown' = 'Seoul'}
del
del
함수로 Dictionary의 원소 삭제
person = {'name':'Michael', 'age':10}
del person['age']
print(person)
>>> {'name':'Michael'}
Dictionary의 특징
💎 key는 변할 수 없는 자료형이어야 한다.
→ key로 리스트는 안되고 튜플은 된다.
datas = {[1, 2, 3]:'Alphabet'} # Error
datas = {(1, 2, 3):'Number'} # OK
실습✍ 넌 나랑 한패! Dictionary
- 다음 대응관계가 담긴 Dictionary를 하나 만들고, 이를 변수 my_dict에 넣어봅시다.
- “사과” → “apple”
- “바나나” → “banana”
- “당근” → “carrot”
- 사과를 영어로 뭐라고 할까요? my_dict에서 “사과”를 Key로 넣어 나온 Value를 변수 var1에 넣어봅시다.
- 당근은 싫어요! my_dict에서 당근-carrot을 제거해봅시다.
- 체리는 좋아요! my_dict에서 체리-cherry를 추가해봅시다.
my_dict = {"사과":"apple", "바나나":"banana", "당근":"carrot"}
var1 = my_dict["사과"]
print(var1)
>>> apple
del my_dict["당근"]
print(my_dict)
>>> {"사과":"apple", "바나나":"banana"}
my_dict["체리"] = "cherry"
print(my_dict)
>>> {"사과":"apple", "바나나":"banana", "체리":cherry}
실습✍ Dictionary의 열쇠?
- 빈 Dictionary를 만들고, 이를 변수 my_dict에 넣어봅시다.
- my_dict에 다음 대응관계를 넣어봅시다.
- 1 → “Integer”
- ‘a’ → “String”
- (1, 2, 3) → “Tuple”
- my_dict에 다음 대응관계를 추가하는 코드를 10번째 줄에 작성해봅시다.
- [1, 2, 3] → “List”
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가 될 수 없습니다.")
print(my_dict)
>>>List는 Dictionary의 Key가 될 수 없습니다.
{1: 'Interger', 'a': 'String', (1, 2, 3): 'Tuple'}
Author And Source
이 문제에 관하여(핵심 파이썬 기초 프로그래밍(4)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@traumen25/핵심-파이썬-기초-프로그래밍4저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)