[혼공학습단9기] 혼공파 3주차

Klaus·2023년 1월 24일
0
post-thumbnail

설 연휴동안 공부에 있어서 많이 게을러졌다.
3주차 완료 기간이 연장되어서 참 다행이다😅


3주차(1/16~1/24) 진도 : Chapter 04

기본 미션 : 리스트, 딕셔너리, 범위 자료형에 대해 이해한 내용을 바탕으로 정리하기

📖 리스트(list)

<의미>

  • 숫자, 문자, 수식 등 개별적인 자료들을 모아 사용할 수 있게 해주는 특별한 형태의 자료.
  • 인덱스 기반으로 값 저장.

<용어>

  • 요소(element) : 대괄호[ ] 내부에 넣는 자료
  • 인덱스(index) : 리스트 기호인 대괄호 [ ] 안에 들어간 숫자

<사용 예시>
⌨️ 코드

list_a = [273, 32, 103, "문자열", True, False]		// 리스트 선언
list_a[0] = 273 	# 인덱스 통해 각 요소 사용
list_a[1:3]			# 문자열 범위 선택 연산자 통해 1번째 글자~2번째까지 선택
list_a[0] = "변경"	# 리스트의 특정 요소 변경
list_a[-1] = False	# 대괄호에 음수 넣어 뒤에서부터 요소 선택
list_a[3][0] = '문'	# 리스트 접근 연산자 이중으로 사용

⌨️ 코드

list_a = [[1,2,3],[4,5,6],[7,8,9]]		# 리스트 선언
list_a[1] =[4,5,6]
list_a[1][1] = 5		# 리스트 안에 리스트 사용

리스트에서의 IndexError 예외

리스트 길이를 넘는 인덱스로 요소 접근하려 할 때 발생.

⌨️ 코드

list_a = [273, 32, 103]		# 리스트 선언
list_a[3]					# 리스트 호출

🖥️ 결과


리스트 연산자: 연결(+), 반복(*), len()

문자열에 적용할 수 있는 연산자는 리스트에서도 활용 가능

⌨️ 코드

# 리스트 선언
list_a = [1,2,3]
list_b = [4,5,6]

# 리스트 출력
print("# 리스트")
print("list_a =", list_a)
print("list_b =", list_b)
print()

# 리스트 연산
print("# 리스트 기본 연산자")
print("list_a + list_b =", list_a + list_b)		# 문자열 연결 연산자 + 사용
print("list_a * list_b =", list_a * list_b)		# 문자열 반복 연산자 * 사용
print()

# 함수
print("# 리스트 길이 구하기")
print("len(list_a) =", len(list_a))				# len() 함수
print()

🖥️ 결과


리스트에 요소 추가하기: append, insert, extend

  • append() 함수 이용해 리스트 뒤에 요소 추가
리스트명.append(요소)
  • insert() 함수 이용해 리스트 중간(원하는 위치)에 요소 추가
리스트명.insert(위치, 요소)
  • extend() 함수 이용해 한 번에 여러 요소 추가
    - 매개 변수로 리스트 입력
    - 리스트 연결 연산자와의 동작 차이
    • 리스트 연결 연산자 : 원본 리스트에 변화 없음 -> 비파괴적(자료 사용 편리)
    • extend() 함수 : 원본 리스트에 직접적인 영향 줌 -> 파괴적(용량에서 이점)
리스트명.extend(추가할 리스트명)

⌨️ 코드

# 리스트 선언
list_a = [1,2,3]

# 리스트 뒤에 요소 추가
print("# 리스트 뒤에 요소 추가")
list_a.append(4)
list_a.append(5)
print(list_a)
print()

# 리스트 중간에 요소 추가
print("# 리스트 중간에 요소 추가")
list_a.insert(0, 10)
print(list_a)
print()

# 한 번에 여러 요소 추가
print("# 한 번에 여러 요소 추가")
list_a.extend([6,7,8])
print(list_a)
print()

🖥️ 결과


리스트에서 요소 제거하기

  • 인덱스로 제거하기: del, pop()
    - del 키워드 : 리스트 특정 인덱스의 요소 제거
    - pop() : 특정 인덱스 요소 제거, 인덱스 입력하지 않으면 마지막 요소 제거
del 리스트명[인덱스]
리스트명. pop(인덱스)
  • 값으로 제거하기: remove()
    - 값을 지정해 제거
    - 지정 값 여러 개 있어도 가장 먼저 발견되는 하나만 제거
리스트.remove(값)
  • 모두 제거하기: clear()
    - 내부 요소 모두 제거
리스트.clear()

리스트 내부에 있는지 확인하기: in/not in 연산자

  • in 연산자
    - 리스트 내부에 값 있으면 True
    - 리스트 내부에 값 없으면 False
in 리스트
  • not in 연산자
    - 리스트 내부에 해당 값 없는지 확인하는 연산자
    - in 연산자의 반대로 동작

for 반복문: 리스트와 함께 사용하기

  • for 반복문 : 특정 코드 반복해 실행 시 사용하는 구문
for 반복자 in 반복할 수 있는 것:
	코드

⌨️ 코드

# 리스트 선언
array = [273, 32,103,57,52]

# 리스트에 반복문 적용
for element in array:
	# 출력
    print(element)

🖥️ 결과

cf ) for 반복문과 문자열 함께 사용하기

⌨️ 코드

for character in "안녕하세요":
    print("-", character)

🖥️ 결과


📚 딕셔너리

<의미>

  • 키를 기반으로 값 저장
  • 중괄호{}로 선언
  • '키: 값' 형태를 쉼표(,)로 연결해 만듦
  • 키 : 문자열(general), 숫자, 불 등으로 선언 가능
  • 선언
변수 = {:,:,
    ...:}

<용어>

  • 키(key) : 딕셔너리 내부에서 값에 접근할 때 사용
  • 값(value) : 딕셔너리 내부에 있는 각각의 내용

⌨️ 코드

dict_a = {
	"name" = "어벤저스 엔드게임",
    "type" = "히어로 무비"
}

딕셔너리의 요소에 접근하기

  • 리스트처럼 딕셔너리 뒤에 대괄호[ ]를 입력한 후 내부에 인덱스처럼 키 입력
    ⌨️ 코드
dict_a["name"]
dict_a["type"]
  • 리스트와 딕셔너리의 요소 접근 방법 차이
구분선언 형식사용 예틀린 예
리스트list_a = [ ]list_a = [1]
딕셔너리dict_a = { }dict_a = {"name"}dict_a{"name"}

⌨️ 코드

# 딕셔너리 선언
dictionary = {
	"name" : "7D 건조 망고",
    "type" : "당절임",
    "ingredient : ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
    "origin" : "필리핀"
}

# 출력
print("# 값 출력")
print("name:", dictionary["name"])
print("type:", dictionary["type"])
print("ingredient:", dictionary["ingredient"])
print("origin:", dictionary["origin"])
print()

# 값 변경
print("# 값 변경")
dictionary["name"] = "8D 건조 망고"
print("name:", dictionary["name"])
print()

# 리스트 안의 특정 값 출력
print("# 리스트 안의 특정 값 출력")
print("두번째 ingredient: ", dictionary["ingredient"][1])

🖥️ 결과


딕셔너리의 문자열 키와 관련된 실수 : NameError

  • name이라는 이름이 정의되지 않아 발생
  • 딕셔너리 키에 단순한 식별자를 입력하면 이를 변수로 인식
  • 키를 문자열로 사용 시, 반드시 따옴표 붙여야 함

⌨️ 코드

dict_key = {
	name: "7D 건조 망고",
    type: "당절임"		# type은 기본 식별자 type()함수가 있어 오류 발생하지 않음
}

🖥️ 결과


딕셔너리에 값 추가하기/제거하기

  • 딕셔너리에 값 추가 : 키 기반으로 값 입력
딕셔너리[새로운 키] = 새로운 값

⌨️ 코드

dictionary["price"] = 5000
dictionary["name"] = "8D 건조 파인애플"
print(dictionary)

🖥️ 결과

  • 딕셔너리에 값 제거 : 리스트처럼 del 키워드 이용

⌨️ 코드

del dictionary["ingredient"]
print(dictionary)

🖥️ 결과


KeyError 예외

  • 딕셔너리에 존재하지 않는 키에 접근 시 발생
    ⌨️ 코드
dictionary = {}
dictinary["Key"]

🖥️ 결과


딕셔너리 내부에 키가 있는지 확인하기

  • KeyError 대처 위해 딕셔너리 내부에 키 존재 여부 확인

< in 키워드 >
⌨️ 코드

# 딕셔너리 선언
dictionary = {
 	"name" : "7D 건조 망고",
    "type" : "당절임",
    "ingredient" : ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
    "origin" : "필리핀"
}

# 입력 받기
key = input("> 접근하고자 하는 키: ")

# 출력
if key in dictionary:
	print(dictionary[key])
else :
	print("존재하지 않는 키에 접근하고 있습니다.")

🖥️ 결과

< get() 함수 >

  • 딕셔너리의 get() 함수 이용하는 방법
  • 딕셔너리의 키로 값을 추출하는 기능
    - 존재하지 않는 키 접근 시, KeyError 대신 None 출력
    ⌨️ 코드
# 딕셔너리 선언
dictionary = {
 	"name" : "7D 건조 망고",
    "type" : "당절임",
    "ingredient" : ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
    "origin" : "필리핀"
}

# 존재하지 않는 키 접근
value = dictionary.get("존재하지 않는 키")
print("값:", value)

# None 확인 방법
if value == None:
	print("존재하지 않는 키에 접근했었습니다.")

🖥️ 결과


for 반복문: 딕셔너리와 함께 사용하기

for 키 변수 in 딕셔너리:
	코드

📏 범위(range) 자료형

범위

  • 매개변수에 숫자 1개 넣기
range(A)		# 범위 : 0부터 A-1까지의 정수
  • 매개변수에 숫자 2개 넣기
range(A, B) 	# 범위 : A부터 B-1까지의 정수
  • 매개변수에 숫자 3개 넣기
range(A, B, C)	# 범위 : A부터 B-1까지의 정수, 앞뒤의 수가 C만큼의 차이 가짐

for 반복문: 범위와 함께 사용하기

for 숫자 변수 in 범위:
	코드

for 반복문: 리스트와 범위 조합하기

⌨️ 코드

# 리스트 선언
array = [273, 32, 103, 57, 52]

# 리스트에 반복문 적용
for element in array:
	print(element)

🖥️ 결과

-몇 번째 반복인지 알아내는 방법
⌨️ 코드

# 리스트 선언
array = [273, 32, 103, 57, 52]

# 리스트에 반복문 적용
for i in range(len(array)):
	print("{}번째 반복: {}".format(i, array[i]))

🖥️ 결과


for 반복문: 반대로 반복하기

  • 역반목문 : 큰 수에서 작은 수로 반복문 적용
  1. range() 함수의 매개변수 3개 이용
    ⌨️ 코드
# 역반복문
for i in range(4, 0 -1, -1):
	print("현재 반복 변수: {}".format(i))

🖥️ 결과

  1. reversed() 함수 사용
    ⌨️ 코드
# 리스트에 반복문 적용
for i in reversed(range(5)):
	print("현재 반복 변수: {}".format(i))

🖥️ 결과


선택 미션 : p.157쪽의 1번 문제의 답 쓰고 인증하기

0개의 댓글