학습목표

리스트, 딕셔너리, 범위를 이해한다.

for 반복문과 리스트, 딕셔너리, 범위를 조합하는 방법을 배운다.

while 반복문을 배운다.

break, continue 이해하기

 

리스트

자료를 저장할 수 있는 자료?

 

리스트 선언하기

[1, 2, 3, 4]

nums = [1, 2, 3, 4]
print(nums) # [1, 2, 3, 4]
print(nums[1]) # 2

 

리스트 값 변경은

리스트에 변경할 값을 입력해 주면 됩니다.

nums = [1, 2, 3, 4, "a", "에이"]
print(nums) # [1, 2, 3, 4, 'a', '에이']
print(nums[3:5]) # [4, 'a']
nums[5] = "A"
print(nums) # [1, 2, 3, 4, 'a', 'A']

대괄호 안에 음수를 넣어 뒤에서부터 요소를 선택할 수 있습니다.

nums = [1, 2, 3, 4, "a", "에이"]
print(nums[-1]) # 에이
print(nums[-4]) # 3

리스트 접근 연산자를 이중으로 사용할 수 있습니다.

nums = [1234, "대한민국", "ABCD"]
print(nums[1][0]) # 대
print(nums[0][3]) # TypeError: 'int' object is not subscriptable

전 4자를 뽑아오고 싶었는데 에러가 나네요.

그래서 고민하다가 str를 사용해 봤습니다.

nums = [str(1234), "대한민국", "ABCD"]
print(nums[1][0])
print(nums[0][3])

일단 제가 원했던 결과는 나오네요.

 

다음으로 리스트 안에 리스트를 사용할 수 있다고 해요.

nums = [[1, 2, 3, 4], ["대", "한", "민", "국"], "ABCD"]
print(nums[0][2]) # 3
print(nums[1][1]) # 한
print(nums[2][2]) # C

 

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

list_a = [1, 2, 3]
list_b = [4, 5, 6]

print("list_a + list_b = ", list_a + list_b) # list_a + list_b =  [1, 2, 3, 4, 5, 6]
print("list_a * 3 = ", list_a * 3) # list_a * 3 =  [1, 2, 3, 1, 2, 3, 1, 2, 3]
print(len(list_a) + len(list_b)) # 6

리스트에 요소를 추가할 때

는 append(요소), insert(위치, 요소)를 사용합니다.

append()는 가장 뒤에 추가되고요.

insert()는 원하는 위치를 적어서 추가하면 됩니다.

list_a = [1, 2, 3]
list_a.append(4)
list_a.append(5)
print(list_a) # [1, 2, 3, 4, 5]
list_a.insert(0, 6)
print(list_a) # [6, 1, 2, 3, 4, 5]

extend()는 한 번에 여러개를 추가할 수 있습니다.

list_a = [1, 2, 3]
list_b = [4, 5]
list_a.extend(list_b)
print(list_a) # [1, 2, 3, 4, 5]
list_a.extend([6, 7, 8, 9])
print(list_a) # [1, 2, 3, 4, 5, 6, 7, 8, 9]

 

리스트에서 요소를 제거하는 방법

값으로 제거하는 방법 : remove, clear

list_a = [1, 2, 3, 4, 5, 6, 7]
list_a.remove(4)
print(list_a) # [1, 2, 3, 5, 6, 7]
list_a.clear()
print(list_a) # []

 

인덱스로 제거하는 방법 : del, pop(인덱스)

list_a = [1, 2, 3, 4, 5, 6, 7]
list_a.pop(4)
print(list_a) # [1, 2, 3, 4, 6, 7]

pop(4)를 적었는데요.

숫자 4가 삭제된 것이 아니라 인덱스[4]가 삭제되어 5값이 지워졌습니다.

list_a = [1, 2, 3, 4, 5, 6, 7]
del list_a[4]
print(list_a) # [1, 2, 3, 4, 6, 7]

 

del()를 사용해서도 삭제할 수 있습니다.

 

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

list_a = [1, 2, 3, 4, 5, 6, 7]
print(4 in list_a) # True 4가 리스트에 있어서 True
print(10 not in list_a) # True 10이 리스트에 없어서 True

 

for 반복문

print("출석")
print("출석")
print("출석")
print("출석")
print("출석")

for i in range(5):
    print("출석")

 

앞의 리스트를 반복에 사용할 수 있습니다.

list_a = [1, 2, 3, 4, 5, 6, 7]

for i in list_a:
    print(i)

 

딕셔너리와 반복문

리스트가 인덱스를 기반으로 값을 저장하는 것이라면 딕셔너리는 키를 기반으로 값을 저장하는 것입니다.

변수 = {

    키 : 값,

    키 : 값.

 

}

 

dic1 = {"a" : 1, "b" : 2, "c" : 3}
dic2 = {"a1" : 20, "b1" : 20, "c1" : 30}

print(dic2["a1"]) # 20

dic2[a1] = 200
print(dic2["a1"]) # 200

딕셔너리 값에 리스트를 넣을 수도 있는데요.

dic1 = {"a" : [1, 2, 3, 4], "b" : ["A", "B", "C", "D"]}

print(dic1["a"])
print(dic1["a"][1])

이렇게 사용할 수 있습니다.

 

리스트와 딕셔너리의 사용법을 정확하게 익히는 것이 중요할 것 같네요.

리스트 list_a = [] list_a[1]
딕셔너리 dic_a = {} dic_a["name"]

 

딕셔너리 값 변경은

dic1 = {"a" : [1, 2, 3, 4], "b" : ["A", "B", "C", "D"]}

print(dic1["a"][1]) # 2
dic1["a"][1] = 200
print(dic1["a"][1]) # 200

 

d1 = {'a': 2, 'b': 4, 'c': 30}
d2 = {'a1': 20, 'b1': 40, 'c1': 60}

for key in d1:
    print( key , ":" , d1[key])

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

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

값은 딕셔너리 내부에 있는 각각의 내용을 의미합니다.

 

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

print("# 우리 동네 애완 동물들")
for i in pets:
    # print(i)
    print(i["name"], str(i["age"]), "살")

 

반복문과 while 반복문

어떤 조건이 될 때까지 반복하는 형태의 반복을 배우게 됩니다.

 

범위 :  range(5)

 

while 반복문

 

while 불 표현식"

    문장

 

i = 0
while i < 10:
    print("{}번째 반복입니다.".format(i))
    i += 1

 

상태를 기반으로 반복하기

리스트에 3이 있으면 삭제하기

list1 = [1, 2, 3, 2, 3, 1, 3]

while 3 in list1:
    list1.remove(3)
    
print(list1) # [1, 2, 2, 1]

 

시간을 기반으로 반복하기

유닉스 타임은 시간은 1970년 1월 1일 0시 0분 0초를 기준으로 몇 초가 지났는지를 정수로 나타낸 것인데요.

사용하는 형식은

 

import time

number = 0

target_time = time.time() + 5

while time.time() < target_time:
    number += 1

print(number) # 46099988

 

문자열, 리스트, 딕셔너리와 관련된 기본 함수

리스트에 적용할 수 있는 기본 함수 : min(), max(), sum()

num = [104, 105, 95, 456, 183]

print(min(num))
print(max(num))
print(sum(num))

 

reversed() 함수로 리스트 뒤집기

num = [104, 105, 95, 456, 183]
num_reversed = reversed(num)

print(num) # [104, 105, 95, 456, 183]
print(num_reversed)
print(list(num_reversed)) # [183, 456, 95, 105, 104]

 

num = [1, 2, 3, 4, 5, 6, 7]

for i in reversed(num):
    print(i)
    
for i in reversed(num):
    print(i+10)
    
print(num[::-1]) # [7, 6, 5, 4, 3, 2, 1]

 

enumerate() 함수와 반복문 조합하기

example_list = ["요소A", "요소B", "요소C"]

출력값

0번째 요소는 요소A입니다.

1번째 요소는 요소B입니다.

2번째 요소는 요소C입니다.

이렇게 출력하기 위해서는 인덱스가 필요한데요.

인덱스를 강제적으로 만들어 주는 함수가 enumerate() 함수입니다.

 

example_list = ["요소A", "요소B", "요소C"]
print(list(enumerate(example_list))) # [(0, '요소A'), (1, '요소B'), (2, '요소C')]

for i, value in enumerate(example_list):
    print("{}번째 요소는 {}입니다.".format(i, value))
///
0번째 요소는 요소A입니다.
1번째 요소는 요소B입니다.
2번째 요소는 요소C입니다.
///

 

 

딕셔너리의 items() 함수와 반복문 조합하기

enumerate()함수가 리스트 형태로 반복문을 작성할 수 있는 것처럼

딕셔너리에는 items()함수로 키와 값을 조합해서 반복문을 작성할 수 있습니다.

 

리스트 내포

 

array = []

for i in range(0, 20, 2):
    array.append(i * i)

print(array) # [0, 4, 16, 36, 64, 100, 144, 196, 256, 324]

 

리스트 이름 = [표현식 for 반복자 in 반복할 수 있는 것]
array = [i * i for i in range(0, 20, 2)]
print(array)

이렇게 코딩 할 수 있습니다.

 

리스트 이름 = [표현식 for 반복자 in 반복할 수 있는 것 if 조건문
array = [i * i for i in range(0, 20, 2)]
print(array) # [0, 4, 16, 36, 64, 100, 144, 196, 256, 324]

# 조건 추가한 리스트
output = [num for num in array if num != 16]
print(output) # [0, 4, 36, 64, 100, 144, 196, 256, 324]

'혼공파' 카테고리의 다른 글

혼공파 5주 예외처리 6장  (0) 2024.02.04
혼공파 4주차 5장 함수  (2) 2024.01.28
혼공파 ch3 조건문  (1) 2024.01.15
혼공파 ch2 자료형  (0) 2024.01.14
혼공파 1주 파이썬 시작하기 자료형  (1) 2024.01.05

+ Recent posts