컬렉션
데이터를 수집
알고리즘
문제를 해결하기 위한 순서 또는 절차
예시 : 빵집에서 ~
문제 : 빵을 팔아야함
알고리즘 : 반죽 > 발효 > 굽기 > 데코 > 포장 > 판매
알고리즘은 이런 알고리즘도 있지만,
다른 알고리즘도 있다.
발효를 안하거나, 데코를 안하거나
하나의 문제를 해결하기 위한 여러가지 알고리즘을 모아서
빵 만들기 라는 이름을 붙이는 순간. > 자료구조
자료구조
의미 없는 데이터가 자료구조를 통과하는 순간
하나의 정보가 된다.
age = 10
10이라는 의미없는 데이터가, 나이라는 정보로 바뀜
데이터를 저장공간에 담는 순간 하나의 정보가 된다.
list
num1 = 1066
num2 = 240
num3 = 30
num4 = 30
...
num100 = 12330
변수를 100번 선언하지 말자,
100칸짜리 list를 한 번 선언한다.
1. 변수를 여러번 선언하지 않고 여러 칸 list를 한 번만 선언하기 위해서 사용.
변수를 선언하면, 값이 한 개만 담기고, 이름도 반드시 붙여야 한다.
여러 변수를 선언하면 이름도 많아져서 관리하기 불편하다.
따라서 list는 이름 하나고 각 값을 방 번호(인덱스)로 접근하기 때문에
값을 관리하기 훨씬 편하고 쉽다.
2. 규칙성이 없는 값에 규칙성을 부여하기 위해서
list 선언
대괄호 보면 list다
list명 = [값, 값2,...]
list명 = [값] * 칸수
list명 = []
list 길이
len(list명)
list 사용
data.List = [1, 2, 3]
1) 값 넣기
(추가)
dataList.append(값)
dataList.append(4)
결과 : [1, 2, 3, 4]
(삽입)
dataList.insert(인덱스 번호, 값)
dataList.insert(1, 1.5)
결과 : [1, 1.5, 2, 3]
2) 값 삭제
dataList.remove(값)
[1, 2, 3, 1].remove(1)
결과 : [2, 3, 1]
중복시 좌에서 우 방향으로 가장 먼저 만난 값을 삭제한다.
del dataList[인덱스 번호]
del dataList[1]
결과 : [1, 3]
dataList.clear()
모든 값 삭제
3) 값 검색
dataList.index(값)
dataList.index(3)
결과 : 2
중복시 좌에서 우 방향으로 가장 먼저 만난 인덱스 번호를 가져온다.
4) 값 수정
dataList[인덱스번호] = 새로운 값
dataList[0] = 10
결과 : [10, 2, 3]
for문 사용
0, ?, 1 --> ?로 사용 가능
for i in range(len(list명)):
list명[i] // 리스트의 각 요소
빠른 for문 (향상된 for문, forEach문)
for i in list명:
i // 리스트의 각 요소
값의 유무 확인
값 in list명 : 조건식(참 또는 거짓의 값) list안에 값이 있으면 True!
값 not in list명 : list안에 값이 없으면 True!
(1) 1~100까지 값 넣고 출력
# =============================================================================
# dataList = []
# for i in range(100):
# #dataList[i] = i + 1
# dataList. append(i+1)
# print(dataList)
# =============================================================================
dataList = [0]*100
for i in range(100):
dataList[i] = i+1
print(dataList)
실행 결과 :
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
(2) 1~100까지 중 짝수만 넣고 출력
dataList = [0] * 50
for i in range(len(dataList)):
dataList[i] = (i+1) * 2
print(dataList)
실행 결과 :
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]
(3) A~F까지 넣고 출력
dataList = []
for i in range(6) :
dataList.append(chr(65 + i))
print(dataList)
실행 결과 :
['A', 'B', 'C', 'D', 'E', 'F']
(4) A~F까지 중 C 제외하고 출력 **** // 복습이 필요합니다.
dataList = [""] * 5
for i in range(5) :
dataList.append(chr(65 + i)
if i == 2:
continue
print(i)
print(dataList)
>> 이 코드가 실행이 안되는 이유는 :
정답 코드는 :
(5) aBcDeFgHiJkLmNoPqRs...z 넣고 출력
dataList = [""] *26
for i in range(len(dataList)):
dataList[i] = chr(97 + i if i % 2 == 0 else 65 + i )
print(dataList)
for i in dataList:
print(i, end= "")
실행 결과 :
['a', 'B', 'c', 'D', 'e', 'F', 'g', 'H', 'i', 'J', 'k', 'L', 'm', 'N', 'o', 'P', 'q', 'R', 's', 'T', 'u', 'V', 'w', 'X', 'y', 'Z']
aBcDeFgHiJkLmNoPqRsTuVwXyZ
(6) "ABC"에서 B를 Z로 변경하기
strList = "ABC"
#strList[1] = "z"
#print(strList)
print(strList.replace("B", "Z"))
strList = strList.replace("B", "Z")
print(strList)
실행 결과 :
AZC
AZC
(7) 자연수를 한글로 변경하기 // 복습이 필요합니다. 내가 하면 오류가 남.
# 입력 예) 1024
# 출력 예) 일공이사
# 1) 1024 % 10 ==4
# 2) 1024 // 100 == 102
# 3) 102 % 10 == 2
num = (int(input("자연수 입력 : ")
hangle = "공일이삼사오육칠팔구"
result = ""
while num != 0 :
result = hangle[num % 10] + result
num = num // 10
print(result)