Welcome! Everything is fine.

[혼공단 3주차] 혼자 공부하는 파이썬 Chapter 04 본문

자격증 및 기타 활동/한빛미디어 혼공단

[혼공단 3주차] 혼자 공부하는 파이썬 Chapter 04

개발곰발 2021. 7. 25.
728x90

이번주는 3주차로, for 반복문과 while 반복문, 리스트와 딕셔너리, 문자열 등에 대해 공부했다. 반복문은 익숙했지만 리스트, 딕셔너리 사용법과 문자열 관련 함수가 익숙하지 않아서 더 복습해야겠다.

💡 용어 정리

✔ 리스트 : 인덱스를 기반으로 여러 자료를 저장하는 자료형.

✔ 요소 : 리스트 내부에 있는 각각의 내용.

✔ 인덱스 : 리스트 내부에서 값의 위치.

✔ 딕셔너리 : 키를 기반으로 여러 자료를 저장하는 자료형.

✔ 키 : 딕셔너리 내부에서 값에 접근 할 때 사용하는 것.

✔ 값 : 딕셔너리 내부에 있는 각각의 내용.

✔  유닉스 타임 : 세계 표준시로, 1970년 1월 1일 0시 0분 0초를 기준으로 몇 초가 지났는지를 정수로 나타낸 것. 파이썬에서 유닉스 타임을 구할 때는 시간과 관련된 기능을 불러와야 함.(import time)

✔ break 키워드 : 반복문을 벗어날 때 사용하는 키워드.

✔ continue 키워드 : 현재 반복을 생략하고, 다음 반복으로 넘어갈 때 사용하는 키워드.

✔ 리스트 내포(list comprehension) : 리스트 안에 반복문과 같은 식을 넣어 한줄로 작성한 구문.  기본 구문은 다음과 같다.

리스트 이름 = [표현식 for 반복자 in 반복할 수 있는 것]

✔ 이터레이터 : 이터러블(내부에 있는 요소들을 차례차례 꺼낼 수 있는 객체) 중 next() 함수를 적용해 하나하나 꺼낼 수 있는 요소.

✅ 기본미션

💡 리스트

리스트란 인덱스를 기반으로 여러 자료를 저장하는 자료형이다. 리스트와 딕셔너리에 관한 기본적인 내용은 이전에 인프런 강의를 듣고 정리해둔 포스팅이 있다. 리스트와 딕셔너리를 생성하고, 정렬하고, 접근, 추가, 변경, 삭제하는 법 등을 정리해두었다. 기억이 안날 때 참고해서 보면 좋을 것 같다.

 

[1주차] Python 100 문제풀이 Part.2 - 배열

📌 여름방학 스터디 시작 목표 1) 인프런 <예제로 공부하는 Python 100 문제풀이> 강의 완강하기 2) Python과 관련된 개념을 블로그에 정리하고 공유하기 3) 문제풀이를 통해 코딩테스트 대비하기 계

3uomlkh.tistory.com

📃 리스트에 적용할 수 있는 함수

함수 설명
min() 리스트 내부에서 최솟값을 찾는다.
max() 리스트 내부에서 최댓값을 찾는다.
sum() 리스트 내부에서 값을 모두 더한다.
reversed() 리스트 요소의 순서를 뒤집는다.
enumerate() 리스트의 요소를 반복할 때 현재 인덱스가 몇 번째인지 확인한다.

min(), max(), sum() 함수를 사용하는 방법은 간단하다. min(), max()는 바로 숫자를 넣어도 결과가 출력된다.

# min() 함수
a = [1,2,3,4]
print(min(a))
print(min([1,2,3,4]))
print(min(1,2,3,4))

# max() 함수
b = [1,2,3,4]
print(max(b))
print(max([1,2,3,4]))
print(max(1,2,3,4))

# sum() 함수
c = [1,2,3,4]
print(sum(c))
print(sum([1,2,3,4]))

주의해야하는 점은 reversed() 함수와 enumerate() 함수는 일회용 함수라는 것이다. 그 이유는 제너레이터로 구현이 되어있기 때문이다. 일회용 함수이기 때문에 변수에 넣어서 사용하기보단 필요할 때 바로 적어 활용한다. reveresd()함수는 아래와 같이 두 형태로 사용한다고 생각하면 편하다.

# reversed() 함수 사용법 1
list(reversed(리스트))

# reversed() 함수 사용법 2
 for i reversed(리스트):
 	관련 코드 구현하기

일회용 함수에 대해 더 알아보자면, 아래 예시와 같이 적어준 코드의 결과는 reversed() 함수가 적용된 리스트가 1번 출력 되고, 나머지는 빈 리스트로 출력된다. 코드로만 보자면 [5, 4, 3, 2, 1] 이라는 뒤집힌 리스트가 두 번 출력될 것 같지만 일회용 함수이기 때문에 빈 리스트가 출력되는 것이다.

list_a = [1, 2, 3, 4, 5]
list_reversed = reversed(list_a)

print(list(list_reversed))
print(list(list_reversed))

그래서 아래와 같이 필요한 시점에 reversed() 함수를 사용해야 한다.

list_a = [1, 2, 3, 4, 5]
list_reversed = reversed(list_a)

print(list(reversed(list_a)))
print(list(reversed(list_a)))

💡 딕셔너리

딕셔너리란 키를 기반으로 여러 자료를 정리하는 자료형이다. 딕셔너리에 대한 기본적인 내용 역시 위 링크에서 정리했다. 안쓰다보면 딕셔너리를 추가하거나 삭제하는 기본적인 내용조차 잊어버리므로 자주 기억을 되짚어주는 것이 좋겠다. for 반복문과 딕셔너리를 사용하는 방법은 아래와 같다.

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

책에 나와있는 확인문제를 통해 딕셔너리를 사용하는 방법을 연습했다.

pets = [
    {"name":"구름", "age":5},
    {"name":"초코", "age":3},
    {"name":"아지", "age":1},
    {"name":"호랑이", "age":1}
]

print("# 우리 동네 반려 동물들")
for i in range(len(pets)):
    print("{} {}살".format(pets[i]["name"], pets[i]["age"]))

len() 함수를 통해 pets라는 리스트 안에 있는 요소의 갯수만큼 반복하도록 했다. 그 요소가 딕셔너리 형태이고, key가 2개이기 때문에 pets[i]["name"], pets[i]["age"] 와 같이 적어주었다. 반복문이 실행되면서 0부터 돌며 value값을 출력하게 된다.  예를 들어 pets[0]["name"] 라면 첫번째 인덱스의 "name"이라는 key의 value값 "구름"을 출력한다.

 

4번 문제는 딕셔너리를 사용하는 것이 익숙하지 않아서 조금 어려웠다. 또, 파이썬은 아래와 같은 방법을 통해 특정 값이 어떤 자료형인지 알수 있었다.

type("문자열") is str	# 문자열인지 확인
type([]) is list	   # 리스트인지 확인
type({}) is dic		   # 딕셔너리인지 확인

아래는 4번 문제 코드다.

character = {
    "name":"기사",
    "level":"12",
    "item":{
        "sword":"불꽃의 검",
        "armor":"풀플레이트"
    },
    "skill":["베기","세게 베기","아주 세게 베기"]
}

for key in character:
    if type(character[key]) is str:
        print(key,":", character[key])
    elif type(character[key]) is dict:
        print("sword : ", character["item"]["sword"])
        print("armor : ", character["item"]["armor"])
    elif type(character[key]) is list:
        for i in range(len(character[key])):
            print(key, ":", character[key][i])

💡 범위 자료형

범위 자료형은 for 반복문과 자주 사용되는 자료형으로, 특정한 횟수만큼 반복하고 싶을 때 for 반복문과 범위를 조합하여 사용한다. 범위 자료형을 사용하는 방법에는 3가지가 있다.

 

① 매개변수에 숫자를 한 개 넣는 방법

아래 예시와 같이 매개 변수에 5를 넣는다면 0부터 4까지의 정수로 범위를 만든다.

 

range(5)

② 매개변수에 숫자를 두 개 넣는 방법

아래 예시와 같이 매개 변수에 0과 10을 넣는다면 0부터 9까지의 정수로 범위를 만든다.

range(0,10)

③ 매개변수에 숫자를 세 개 넣는 방법

아래 예시와 같이 매개 변수에 0, 10, 3을 넣는다면 0부터 9까지의 정수로 범위를 만들고 앞뒤의 숫자가 3만큼의 차이를 가진다.

range(0,10,3)

 

또한 range() 함수의 매개변수로는 반드시 정수를 입력해야한다. 그렇기 때문에 아래와 같이 나누기 연산자를 사용하면 에러가 발생한다.

# 에러 발생
n = 10
a = range(0, n / 2)

따라서 int() 함수를 사용하여 정수로 바꾸거나 정수 나누기 연산자(//)를 사용해야한다.

n = 10
a = range(0, n // 2)

이러한 범위 자료형은 반복문과 조합해서 많이 쓰인다. 기본적인 형태는 다음과 같다.

for 숫자 변수 in 범위:
	코드

✅ 선택 미션