230421_제로베이스_데이터스쿨_04001~04017

김지태·2023년 4월 21일
0
post-thumbnail

04_001 자료 구조

리스트, 튜플, 딕셔너리, 셋 / 셋은 중복된 데이터를 하나로 취급?

04_002 리스트

students = ['kimjitae', 'Valeria', 'kimyootae']

print(f'학생: {students}')

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

print(numbers)

print(type(students))

04_003 list item searching / 리스트 아이템 조회

students = ['kimjitae', 'Valeria', 'kimyootae']

print(students[0]) # -> kimjitae
print(students[1]) # -> Valeria
print(students[2]) # -> kimyootae

print(type(students[2]))

students = ['kim', 'lee', 'kwang', 'park', 'choi']

for i in range(5):
if i % 2 == 0:
print('인덱스가 짝수인 경우 --> students[{}]: {}'.format(i, students[i]))
else:
print('인덱스가 홀수인 경우 --> students[{}]: {}'.format(i, students[i]))

04_004 길이 / 아이템 개수, len()을 통한 조회 / 문자열 길이 조회

myFavoriteSports = ['수영', '배구', '야구', '조깅']

for i in range(len(myFavoriteSports)):
print(myFavoriteSports[i])

for item in myFavoriteSports:
print(item)

04_004 길이 / 아이템 개수, len()을 통한 조회 / 문자열 길이 조회

myFavoriteSports = ['수영', '배구', '야구', '조깅']

for i in range(len(myFavoriteSports)):
print(myFavoriteSports[i])

for item in myFavoriteSports:
print(myFavoriteSports[i])

질문 : 왜 이렇게 하면 끝에 조깅이 반복적으로 출력이 될까?

04_005 리스트와 for 문

cars = ['그랜저', '소나타', '말리부', '카니발', '쏘렌토']

for i in range(len(cars)):
print(cars[i])

for car in cars:
print(car)

studentsCnts = [ [1, 19], [2, 20], [3, 22], [4, 18], [5, 21]]

for classNo, cnt in studentsCnts:
print(f'{classNo}반은 {cnt}명 입니다.')

for i in range(len(studentsCnts)):
print(f'{studentsCnts[i][0]}반은 {studentsCnts[i][1]}명 입니다.')

for idx, value in enumerate(studentsCnts):
print('{} {}'.format(idx, value))

04_006 리스트와 for 문 2

minScore = 60

scores = [
['국어', 58],
['영어', 77],
['수학', 89],
['과학', 99],
['국사', 50]]

for i in scores:
if i[1] < minScore:
print(f'FAIL TEST : {i[0]} = {i[1]}')

for subject, score in scores:
if score < minScore:
print(f'FAIL TEST : {subject} = {score}')

for subject, score in scores:
if score >= minScore: continue
print(f'FAIL TEST : {subject} = {score}')

연습문제 풀기

04_007 리스트와 while 문 1

cars = ['그랜저', '소나타', '말리부', '카니발', '쏘렌토']

1

n = 0
while n < len(cars):
print(cars[n])
n += 1

2

n = 0
flag = True
while flag:
print(cars[n])
n += 1

if n == len(cars):
flag = False

3

n = 0
while True:
print(cars[n])
n += 1

if n == len(cars):
break

studentsCnts = [ [1, 19], [2, 20], [3, 22], [4, 18], [5, 21]]

n = 0
while n < len(studentsCnts):
print(f'{studentsCnts[n][0]}반은 {studentsCnts[n][1]}명 입니다.')
n += 1

04_008 리스트와 while 문 2

minScore = 60
scores = [
['국어', 58],
['영어', 77],
['수학', 89],
['과학', 99],
['국사', 50]]

n = 0
while n < len(scores):
if scores[n][1] < minScore:
print('과락 과목: {} = 점수: {}'.format(scores[n][0], scores[n][1]))
n += 1

n = 0
while n < len(scores):
if scores[n][1] >= minScore:
n += 1
continue # = 이 아래 쪽은 출력하지 말아라.
print('과락 과목: {} = 점수: {}'.format(scores[n][0], scores[n][1]))
n += 1

enumerate 함수

cars = ['그랜저', '소나타', '말리부', '카니발', '쏘렌토']

for i in range(len(cars)):
print('{} : {}'.format(i, cars[i]))

for idx, value in enumerate(cars):
print('{} : {}'.format(idx, value))

04_010 리스트에 아이템 추가

append 사용

리스트명.append(추가할 요소/아이템 이름)

04_011 특정 위치에 아이템 추가

insert 사용

리스트명.insert(끼어들 자리/인덱스, 추가할 아이템 이름)

insert 로 추가한 아이템이 끼어들게 되고 그 뒤로는 한 칸씩 밀려남.

중요 **

numbers = [1,3,6,11,45,54,62,74,85]

inputNumber = int(input('숫자 입력: '))

insertIdx = 0

for idx, number in enumerate(numbers):
print(idx, number)

if insertIdx == 0 and inputNumber < number:
insertIdx = idx

numbers.insert(insertIdx, inputNumber)

print(numbers)

이해 잘 안됨

04_012 리스트의 아이템 삭제 *

pop() 함수 활용 / 마지막 해당 아이템을 삭제 가능

pop(n) 인덱스 n 에 해당 아이템을 삭제할 수 있다.

변수 = 리스트.pop() / 혹은 / 변수 = 리스트.pop(n) 이렇게 변수에 할당하면 삭제한 데이터를 활용할 수 있다.

playerScores = [9.5, 8.9, 9.2, 9.8, 8.8, 9.0]
print('playersScores : {}'.format(playerScores))

minScore = 0 ; maxScore = 0 ; minScoreIdx = 0; maxScoreIdx = 0

for idx, score in enumerate(playerScores):
if idx == 0 or minScore > score:
minScoreIdx = idx
minScore = score

print('minScore: {}, minScoreIdx: {}'.format(minScore, minScoreIdx))

playerScores.pop(minScoreIdx)

for idx, score in enumerate(playerScores):
if idx == 0 or maxScore < score:
minScoreIdx = idx
maxScore = score

print('maxScore: {}, maxScoreIdx: {}'.format(maxScore, maxScoreIdx))

playerScores.pop(maxScoreIdx)

print('playersScores : {}'.format(playerScores))

04_013 리스트의 특정 아이템 삭제

remove 함수 이용 => 리스트.remove(삭제할 아이템이름)

remove는 한 개의 아이템만 삭제 가능하다. 만약 삭제하려는 데이터가 2개 이상이라면 while 문을 사용하자.

students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동']

print(students)

while '강호동' in students:
students.remove('강호동')

print(students)

print('강호동' in students)

04_014 리스트 연결 / 리스트에 다른 리스트를 연결하기

extend() 는 본인에 리스트를 확장하는 것

g1 = ['홍길동', '박찬호', '이용규']
g2 = ['강호동', '박승철', '김지은']

print('group1: {}'.format(g1))
print('group2: {}'.format(g2))

g1.extend(g2)

print('group1: {}'.format(g1))
print('group2: {}'.format(g2))

합치면 extend()와 다르게 아예 새로운 리스트가 생겨남

g1 = ['홍길동', '박찬호', '이용규']
g2 = ['강호동', '박승철', '김지은']

print('group1: {}'.format(g1))
print('group2: {}'.format(g2))

g3 = g1 + g2

print('group1: {}'.format(g1))
print('group2: {}'.format(g2))
print('group3: {}'.format(g3))

myFavoriteNumber = [1, 3, 5, 6, 7]
friendFavoriteNumber = [2, 3, 5, 8, 10]
print('myFavoriteNumber: {}'.format(myFavoriteNumber))
print('friendFavoriteNumber: {}'.format(friendFavoriteNumber))

addList = myFavoriteNumber + friendFavoriteNumber

print('addList: {}'.format(addList)) # 겹치는 숫자 발생

result = []
for number in addList:
if number not in result:
result.append(number)

print('result: {}'.format(result))

04_015 리스트 아이템 정렬 / 오름차순, 내림차순으로 정렬하기

sort() -> 오름차순 정렬

sort(reverse = True) -> 내림차순 정렬

students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students: {}'.format(students))

students.sort()
print('students: {}'.format(students))

students.sort(reverse=True)
print('students(reverse=True): {}'.format(students))

students.sort(reverse=False)
print('students(reverse=False): {}'.format(students))

04_016 리스트 아이템 순서 뒤집기

reverse() -> 아이템들 순서를 뒤집을 수 있음

04_017 리스트 슬라이싱 / 원하는 아이템만 뽑아내자

[n : m] 인덱스 값 n 부터 m-1까지 슬라이싱

[n : ] 인덱스 값 n부터 끝까지 슬라이싱

[n : -m] 인덱스 값 n부터 (마지막 인덱스 값 - m)인 인덱스 값까지 / (리스트 길이 값 -m -1)인 인덱스 값까지

문자열도 슬라이싱 가능

[n : m : k] k칸씩 띄어 슬라이싱

슬라이싱으로 아이템 변경 가능

[2:5] = [g, f, d] 기존 리스트의 2번~4번 값 대신 g, f, d 로 바꿈 갯수 안맞으면 안맞는 대로 됨

slice() 함수 사용 가능 slice(2, 4) == [2:4]

profile
데이터 분석가

0개의 댓글