뒤늦게 작성하는...
혼공학습단 8기 파이썬 3주차 공부
리스트 자료형: 여러가지 자료를 저장할 수 있는 자료
- 하나의 리스트 내 여러 자료형으로도 구성 가능하다.
리스트 연산자
- + : 리스트 연결 연산자
- * : 리스트 반복 연산자
- len(): 괄호 안에 문자열을 넣으면 문자열의 길이를 세어주나, 리스트 변수를 넣으면 요소의 개수를 세어준다.
리스트 요소 추가하기
- 리스트명.append(요소)
- 리스트명.insert(위치, 요소)
- 리스트명.extend(리스트): 한번에 여러 요소를 추가할 때 사용
리스트 연결 연산자 +를 이용하는 경우 ▶ 비파괴적
리스트 요소 추가 함수들을 이용하는 영우 ▶ 파괴적
원본에 어떠한 영향도 주지 않는 것을 비파괴적이라 한다.
리스트 요소 제거
- del 리스트명[인덱스]
- 리스트명.pop(인덱스)
- 리스트명.remove(값): 리스트 내부 특정 값을 제거. 먼저 발견되는 값을 제거한다.
- 리스트명.clear(): 리스트 내 모든 요소 제거
del 키워드를 사용하는 경우, 범위를 지정하여 리스트 요소를 한번에 제거할 수 있다.
del arr[3:6]의 겨우, 3~5번째 요소들 제거됨.
리스트 내부에 해당 값이 있는가? 반환값은 True/Fasle
→ 값 in 리스트명
리스트 내부에 해당 값이 없는가? 반환값은 True/Fasle
→ 값 not in 리스트명
For 반복문
컴퓨터에 반복을 지시하는 문법.
# basic한 반복분
For i in tange(100):
print("반복문 출력")
# 리스트와 함께 사용하는 반복문
for 반복자 in 반복할 수 있는 것:
#코드
pass
참고로 반복할 수 있는 것 항목에는 문자열도 가능하다.
for character in "안녕하세요":
print(character)
딕셔너리 자료형: 키를 기반으로 값을 저장하는 것
자료형 | 의미 | 가리키는 위치 | 선언 형식 |
리스트 | 인덱스를 기반으로 값을 저장 | 인덱스 | 변수 = [] |
딕셔너리 | 키를 기반으로 값을 저장 | 키 | 변수 = {} |
딕셔너리 요소에 접근하기 위해서는, 리스트처럼 딕셔너리 뒤에 대괄호를 입력하고 키를 입력하면 된다.
딕셔너리 내부 값에는 다양한 자료를 넣을 수 있다. 문자열, 숫자, BOOL, 리스트, 딕셔너리까지..
자료형 | 선언형식 | 사용 예 | 틀린 예 |
리스트 | list_a = [] | list_a[1] | |
딕셔너리 | dict_a= {} | dict_a["name"] | dict_a{"name"} |
# 딕셔너리에 요소 제거
dict_a = {"name":"피카츄","skill":"윙크하기"}
del dict_a["name"]
# 결과 dict_a = {"skill":"윙크하기"}
in 키워드
- 딕셔너리 내부에 값이 있는지 없는지 확인할 때 사용한다.
- 다음 예제는 접근하고자 하는 키를 입력받은 후, 존재하는 경우에만 접근하여 값을 출력.
- 존재하지 않는 키에 접근할 때 생기는 KeyError 예외가 발생할 일이 없음.
dict_a = {
'name': '피카츄',
'skill': ['윙크하기','뽀뽀하기','몸통박치기'],
'type': '전기타입'
}
key = input("> 접근하고자 하는 키 입력: ")
if key in dict_a:
print(dict_a[key])
else:
print("키가 없음")
get() 함수
- 딕셔너리의 키로 값을 추출하는 기능.
- dictionary['key']와 같은 기능을 수행하나, 존재하지 않는 키에 접근할 경우 KeyError 예외가 발생 X
- 대신 None을 출력
dict_a = {
'name': '피카츄',
'skill': ['윙크하기','뽀뽀하기','몸통박치기'],
'type': '전기타입'
}
value = dict_a.get('missing')
print("값: ",value)
if value==None:
print("존재하지 않는 키에 접근함")
# for 반복문과 딕셔너리 사용하기
dict_a = {
'name': '피카츄',
'skill': ['윙크하기','뽀뽀하기','몸통박치기'],
'type': '전기타입'
}
for key in dict_a:
print(key," : ",dict_a[key])
범위(range) 자료형: for 반복문과 많이 사용. 특정 횟수만큼 반복
1) 매개변수에 숫자 한 개를 넣는 방법
2) 매개변수에 숫자 두 개를 넣는 방법
3) 매개변수에 숫자 세 개를 넣는 방법
# 1)
ramge(num): 0 ~ num-1을 범위로 함
# 2)
range(n,m): n ~ m-1을 범위로 함
# 3)
range(n, m, v): n ~ m-1를 범위로 하나, 앞 뒤 숫자가 v만큼의 차이를 가진다.
※ 단, range() 함수의 매개변수로는 반드시 정수를 입력해야 함.
range(0, 50/2) # TypeError 발생
range(0, int(50/2)) # 성공. 실수를 정수로 바꾸는 방법
range(0, 50 // 2) #성공. //는 정수 나누기 연산자
정수 나누기 연산자(//): 소숫점 이하의 자릿수를 떼어버린 후 정수 부분만 남기는 연산자이다.
문자열, 리스트, 딕셔너리와 관련된 함수
리스트에 작용할 수 있는 기본 함수
- min(): 리스트 내부에서 최솟값 찾기
- max(): 리스트 내부에서 최댓값 찾기
- sum(): 리스트 내부에서 값을 모두 더하기
리스트 뒤집기 reversed()
※ 주의할 점: reversed() 함수의 결과는 제너레이터이다. 제너레이터란 파이썬의 특별한 기능으로, 여러 개의 데이터를 미리 만들어 놓지 않고 필요할 때마다 즉석해서 하나씩 만들어낼 수 있는 객체이다.
어렵다면... "1회용 함수" 라고 생각하면 되겠다.
list_a=[1,2,3,4,5]
temp = reversed(list_a)
for i in temp:
print("반복문 1번 {}".format(i))
for i in temp:
print("반복문 2번 {}".format(i))
결과와 같이 반복문 2번은 출력되지 않는다. 이는 reversed() 함수의 결과가 제너레이터이기 때문이다.
궁금해서 시도해보니.. 다음과 같이 쓰면 반복문1번, 2번 모두 출력된다.
list_a=[1,2,3,4,5]
temp = reversed(list_a)
for i in temp:
print("반복문 1번 {}".format(i))
temp = reversed(list_a)
for i in temp:
print("반복문 2번 {}".format(i))
그래도.
reversed() 함수와 반복문을 조합할 때는 함수의 결과를 여러번 활용하지 말고..
아래와 같이 for 구문 내부에 reversed() 함수를 곧바로 넣어서 사용하자.
list_a=[1,2,3,4,5]
for i in reversed(list_a):
print("반복문 1번 {}".format(i))
for i in reversed(list_a):
print("반복문 2번 {}".format(i))
현재 인덱스가 몇번째인지 확인하기: enumerate()
리스트 + range()로 반복문
# enumerate() 사용하지 않고 리스트 요소 반복하기
list_a = ['넘버원','넘버투','깍두기']
for i in range(len(list_a)):
print("{}번째 요소는 {}입니다.".format(i,list_a[i]))
리스트 + enumerate()로 반복문
# enumerate() 사용하여 리스트 요소 반복하기
import enum
list_a = ['넘버원','넘버투','깍두기']
print("enumerate(list_a)", enumerate(list_a))
print("list(enumerate(list_a)",list(enumerate(list_a)))
for i,j in enumerate(list_a):
print("{}번째 요소는 {}입니다.".format(i,j))
딕셔너리로 easy하게 반복문 작성하기: item()
딕셔너리로 반복문 작성 시 items()함수를 사용하면 쉽게 반복문을 작성할 수 있다.
dict_a={
"key_1":"value_1",
"key_2":"value_2",
"key_3":"value_3",
}
print("# 딕셔너리 items()함수 사용")
print("items(): ",dict_a.items())
print()
print("# 딕셔너리 + items() 함수 조합한 반복문")
for key,value in dict_a.items():
print("dictionary[{}] = {}".format(key,value))
가장 중요한 "리스트 컴프리헨션(comprehension)"
중요한 이유: 예전에 본 코드에서 헷갈렸던 것중 하나임. 컴프리헨션(리스트 딕셔너리 셋 포함) 구문 보고 이해 못했던 기억이 강렬하다..
# Basic
array = []
for i in range(0,20,2):
array.append(i*i)
print(array)
# list comprehension
array = [i*i for i in range(0,20,2)]
print(array)
의미: range(0,20,2)의 요소를 i라고 할 때, i*i로 리스트를 재조합해달라.
리스트 이름 = [ 표현식 for 반복자 in 반복할 수 있는 것 ]
# list comprehension
array = ['사과','자두','초콜릿','바나나','체리']
result = [fruit for fruit in array if fruit != "초콜릿"]
print(result)
의미: array의 요소를 fruit라고 할 때, 초콜릿이 아닌 fruit로 리스트를 재조합해달라.
리스트 이름 = [ 표현식 for 반복자 in 반복할 수 있는 것 if 조건문 ]
3주차 추가미션
157p 확인문제 1번
'프로그래밍 > python' 카테고리의 다른 글
혼공학습단 8기 파이썬 4주차 (0) | 2022.07.31 |
---|---|
[파이썬] 이터레이터(iterator) (0) | 2022.07.30 |
혼공학습단 8기 파이썬 2주차 (0) | 2022.07.16 |
혼공학습단 8기 파이썬 1주차 미션 (0) | 2022.07.10 |
혼공학습단 8기 파이썬(구판) 커리큘럼 (0) | 2022.07.01 |