4장의 내용이 python에서도 제일 중요하고, 모든 프로그램에서도 제일 중요한 부분인것 같습니다.
그 이유는 반복문이 있고, 자료형에 대해서 다루기 때문입니다.
보통 사용하는 방식만 사용하는 패턴이 있어서 이렇게 전반적인 주요 메소드를 살펴보고
동작방식을 이해하는것은 많은 도움이 될 것 같습니다.
이번장에서는 중요하다고 생각되는 부분이 많아서, 색깔 표시가 많은것 같습니다.
■ 요약
# 1. 리스트
# 형태 : [ ] 대괄호를 사용
# 숫자는 그냥 입력함
# 요소 구성시 "", '' 모두 사용가능함
list = [1,2,"a","b",'c','12']
# 오류 : IndexError (리스트는 index기반)
# 2. 딕셔너리
# 형태 : { } 중괄호를 사용
# 키 정의시 "key", 'key' 모두 사용이 가능함
# key, value형태로 구성함
dict = {
"name":"홍길동",
"age" : "20"
}
# 오류 : keyError (딕셔너리는 key기반)
■ 리스트
- 문자열 parsing하는것처럼 리스트 항목을 추출할수 있다
list = [0,1,2,3,4,5]
list[0] # 0
list[1:3] # 1,2
list[-1] # 5
- 이런 패턴을 눈여겨 보면 좋을것 같다. 이중으로 사용하는 경우
- 리스트 요소에서 이중으로 [][]를 이용해서 접근할수 있는데
이때 숫자에 대해서는 접근할수 없고, 문자열의 요소에서만 사용이 가능한다.
- 리스트 요소에서 이중으로 [][]를 이용해서 접근할수 있는데
list = [123, "123", "abc", "야구"]
a = list[0] # 123
b = list[1][0] # 1
c = list[2][1] # b
d = list[3][1] # 구
- 리스트 안에 리스트 구성하기
- 리스트안에 리스트는 갯수가 동일하지 않아도 된다
- 위에서 학습한 요소에서 특정 문자열 찾기도 검증해본다. [ ][ ][ ] // 잘 동작한다.
- 조금 더 고차원 배열을 다루는 numpy라는 라이브러리도 참고하면 좋을것 같다.
list = [[1,2], [3,4,5,2,2,3], [6,7]]
list # [[1, 2], [3, 4, 5, 2, 2, 3], [6, 7]]
a = list[0] # [1, 2]
b = list[1] # [3, 4, 5, 2, 2, 3]
c = list[2] # [6, 7]
# [][][] 동작되는지 확인해보기
list = [[1,2], [3,"홍길동",5], [6,7]]
a = list[1][1][:] # 홍길동
b = list[1][1][0] # 홍
- 리스트 연산 : 연결(+), 반복(*), len()
- 리스트는 리스트와 + 을 연산해야지 오류없이 정상 수행된다.
list_a = [1,2]
list_b = [3,"길동",5]
list_c = ["##", "@@", 6]
sum_list = list_a + list_b + list_c # [1, 2, 3, '길동', 5, '##', '@@', 6]
a = "a"
list_a = [1, 2]
sum_list = a + list_a # TypeError: must be str, not list
list_a = [1, 2]
sum_list = list_a * 2 # [1, 2, 1, 2]
- 리스트에 요소 추가하기 : append(), insert(), extend()
요소를 추가하는 방식이 여러가지가 있습니다.
> append() : list 맨 뒤에 추가됩니다.
> insert() : list 중간에 원하는 위치에 추가됩니다.
여기서 insert수행시 -1을 이용해서 넣으면 맨 마지막 요소에 추가되는것이 아니고, 기존 요소 앞에 들어가고 있습니다.
맨 뒤에 요소를 추가할때는 append를 사용하는것이 제일 편하고 혼돈이 안될거 같습니다.
> extend() : 여러 요소를 한꺼번에 넣을때 사용합니다.
extend는 list를 + 더하는 기능과 동일하게 결과가 출력됩니다.
p. 201) 비파괴적 ,파괴적이라는 개념 : 원본데이터가 회손되는지 안되는지 차이가 발생합니다.
append, insert는 한가지 요소만 넣을수 있습니다.
list = ["insert",] # 뒤에 ,을 넣어도 무시됩니다.
list.append("a")
list.append(1)
list.append("#")
print(list) # ['insert', 'a', 1, '#']
list = ["insert"] # 뒤에 ,을 넣어도 무시됩니다.
# 계속 앞으로 넣기
list.insert(0,"a") # ['a', 'insert']
list.insert(0,"b") # ['b', 'a', 'insert']
list.insert(0,"c") # ['c', 'b', 'a', 'insert']
# -1을 이용하면 어떻게 될까?
list.insert(-1,"minus-position") # ['c', 'b', 'a', 'minus-position', 'insert']
list.insert(3,"3") # ['c', 'b', 'a', '3', 'minus-position', 'insert']
# insert -1을 활용해서 해보기
# 결론은 마지막요소 앞에 들어가는 동작방식입니다.
list = [1,2,]
print(list[-1]) # 2
list.insert(-1,3 )
list.insert(-1,4 )
list.insert(-1,5 )
print(list) # [1, 3, 4, 5, 2]
# extend기능
list = ["insert",] # 뒤에 ,을 넣어도 무시됩니다.
list.extend(["a",1,2,])
print(list) # ['insert', 'a', 1, 2]
list = ["insert",] # 뒤에 ,을 넣어도 무시됩니다.
list_b = ["a",1,2,]
print(list + list_b) # ['insert', 'a', 1, 2]
- 리스트에 요소 제거하기
크게 2가지 방법으로 나뉩니다.
① 인덱스로 제거하기 : del키워드 또는 pop()함수
형식 : del 리스트명[인덱스]
ex) del list[1], del list[1:3], del list[:3], del list[3:]
형식 : 리스트명.pop(인덱스)
② 값으로 제거하기 : remove()
형식 : 리스트.remove(값)
list[1,2,1,2].remove(2) # 1,1,2 (동일한 값이 있는경우 첫번째 것만 제거한다)
리스트 슬라이싱 (p. 204)
리스트[시작_인덱스: 끝_인덱스 : 단계]
기존에 list[1:5]는 단계에 1이 생략된 형태입니다. list[1:5:1]과 같은 의미입니다.
list[1,2,3,4,5,6,7,8]
list[0:5:2] # 결과[1,3,5]
list[::-1] # 결과 [8,7,6,5,4,3,2,1] 리스트 역순으로 처리하기 쉬운 방법
- 모두 제거하기 : clear()
- 리스트 정렬하기 : sort()
- 기본 오름차순 정렬
- 내림차순 : sort(reverse=True)
- 리스트 내부에 있는지 확인하기 : in / not in 연산자
- 보통 in을 사용하는데, not in도 잘 할용하자
■ for 반복문
형식 : for 반복자 in 반복할수 있는것:
반복할수 있는 부분에 문자열, 리스트, 딕셔너리, 범위 등이 올 수 있다.
# 범위
for i in range(100):
pass
# 리스트
for i in [1,2,3]:
pass
# 문자열
for i in "배고파":
print(i) # 배, 고, 파 하나씩 출력됨
매우 중요한, 전개연산자
전개연산자라는 것보다 *args 이런 코드를 보시거나, 앞으로 언제인가 자주 보는 패턴입니다.
*리스트 = 리스트[0], 리스트[1],.........
리스트 요소를 전개하여 입력한 것과 같은 효과를 냅니다.
보통 인자값으로 아래와 같은 패턴으로 많이 사용합니다.
요약하면 *표시는 list [1,2,3] 형태의 리스트를 처리하는 것입니다.
** 의 형태는 dictionary를 처리합니다.
■ 딕셔너리
- key, value로 구성됨
- value에는 문자열, 숫자, bool, 리스트, 딕셔너리 모두 넣을수 있다.
dict = {"a" : 1, "b" : 2}
# key을 이용할경우 []을 이용 (리스트와 비슷한 대괄호 이용)
dict["a"] # 1
dict['b'] # 2
- 딕셔너리에 값 추가하기/제거하기
- 추가 하기
- 딕셔너리[새로운키] = 새로운값
- 기존 동일 key를 이용할 경우, 기본 값이 변경됩니다.
- 제거 하기
- del 딕셔너리[새로운키]
- list처럼 값을 이용해서 remove는 기능은 없다.
- 추가 하기
- 딕셔너리 내부에 키가 있는지 확인하기
- in 키워드 / get() 함수 2가지 방식으로 체크합니다.
- in은 if문으로 조절을 하고,
- in 키워드 / get() 함수 2가지 방식으로 체크합니다.
# in 으로 체크하는 방법
# L if문을 이용해서 True / False로 체크하는 방식
dict = {"a" : 1 }
if key in dict:
pass # 해당 key값이 있는 경우
else:
pass # 해당 key값이 없는 경우
# get() 함수로 체크하는 방법
check_key = dict.get("key값")
# check_key값은
# L key가 정상적으로 있으면 그에 따른 Value값을 return
# L key가 존재하지 않는경우, None값을 return
■ 범위 자료형
보통 쉽게 반복문에 범위를 구성할때 사용을 함
range안에 인자값은 정수형을 사용해야 한다.
range(1)
range(1,2)
range(1,2,3)
# 리스트 구성시, 숫자 다 안쓰고 쉽게 구성하기
range(5)
=> range(0,5)
=> list(range(5)) # [0,1,2,3,4]
list(range(0,5)) # [0,1,2,3,4]
list(range(5,10)) # [5,6,7,8,9]
list(range(0,10,2)) # [0,2,4,6,8]
list(range(0,10,3)) # [0,3,6,9]
- 반대로 반복하기
# 역순으로, 반대로 반복하기
for i range(4, 0, -1):
pass
# reversed
for i in reversed(range(5)):
pass
# 4,3,2,1,0
■ while 반복문
# 형식
while bool-표현식:
문장
# 실행
while True:
문장
while i < 10:
문장
# break; continue;
■ 문자열, 리스트, 딕셔너리와 관련된 기본 함수
- 리스트에서 사용 : min(), max(), sum()
L DB에서 함수처럼 사용 - 리스트에서 사용 : reversed() 뒤집기
- enumerate()함수와 반복문 조합하기
■ 기본미션
리스트, 딕셔너리, 범위 자료형에 대해 이해한 내용을 바탕으로 포스팅하기 - 완료
■ 선택미션
p.213쪽의 1번 문제의 답 쓰고 인증샷
list_a = [0,1,2,3,4,5,6,7]
list_a.extend(list_a) # [0,1,2,3,4,5,6,7, 0,1,2,3,4,5,6,7]
list_a.append(10) # [0,1,2,3,4,5,6,7,10] 맨뒤에 추가
list_a.insert(3,0) # [0,1,2,0, 3,4,5,6,7]
list_a.remove(3) # [0,1,2,4,5,6,7] 해당 value삭제
list_a.pop(3) # [0,1,2,4,5,6,7] 3번째 항목 제거
list_a.clear() # []
'study' 카테고리의 다른 글
혼공 파이썬 5주차 (0) | 2022.08.13 |
---|---|
혼공 파이썬 4주차 (0) | 2022.07.31 |
혼공 파이썬 2주차 (0) | 2022.07.05 |
혼공 파이썬 1주차 (0) | 2022.07.04 |
혼공 머신러닝/딥러닝 6주차 (0) | 2022.02.26 |