자료구조
List
: ex) students = ['홍길동', '박찬호', '이용규']Tuple
: ex) jobs = ('의사', '변호사', '감저평가사')Dic
: ex) scores = {'kor':90, 'eng':100, 'mat':95}Set
: ex) allsales = {100, 150, 90, 110}리스트(List)
리스트 아이템 조회
Q. 5명의 학생 이름을 리스트에 저장하고 인덱스가 홀수인 학생과 짝수(0포함)인 학생 구분해서 인덱스와 학생 이름 출력/ for문으로 변경
students = ['김성예', '신경도', '박기준', '최승철', '황동석']
print('--인덱스가 짝수인 학생--')
print('students[0]: {}'.format(students[0]))
print('student[2]: {}'.format(students[2]))
print('student[4]: {}'.format(students[4]))
print('--인덱스가 홀수인 학생--')
print('student[1]: {}'.format(students[1]))
print('student[3]: {}'.format(students[3]))
for i in range(5):
if i % 2 == 0:
print('인덱스가 짝수인 경우 --> students[{}]: {}'.format(i, students[i]))
else:
print('인덱스가 홀수인 경우: students[{}]: {}'.format(i, students[i]))
리스트 길이
Q. len()과 반복문을 이용하여 리스트 아이템 조회
1)
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
sLength = len(students)
print('length of students: {}'.format(sLength))
2)
for i in range(len(students)):
print('i: {}'.format(i))
print('students[{}]: {}'.format(i, students[i]))
3)
n = 0
sLength = len(students)
while n < sLength:
print('n: {}'.format(n))
print('students: {}'.format(n, students[n]))
n += 1
Q. len()함수의 문자열 길이
str = 'hello python'
print('\'hello python\'의 길이: {}'.format(len(str)))
Q. 좋아하는 운동 종목을 리스트에 저장하고 반복문을 이용해서 출력
myFavoriteSports = ['수영', '배구', '야구', '조깅']
for i in range(len(myFavoriteSports)):
print('myFavoriteSports[{}] : {}'.format(i, myFavoriteSports[i]))
리스트와 for문 1
for i in range(len(list)):
Q. 학급별 학생 수와 전체 학생 수 그리고 평균 학생수 출력
studentCnts = [[1, 18], [2, 19], [3, 23], [4, 21], [5, 20], [6, 22],[7, 17]]
sum = 0
avg = 0
for calssNo, cnt in studentCnts:
print('{}학급 학생수: {}명'.format(calssNo, cnt))
sum += cnt
print('전체 학생 수: {}명'.format(sum))
print('평균 학생 수: {}명'.format(sum/ len(studentCnts)))
Q. 사용자가 국어, 영어, 수학, 과학, 국사 점수를 입력하면 과락 과목과 점수를 출력
minScore = 60
korScore = int(input('국어점수 입력: '))
engScore = int(input('영어점수 입력: '))
mathScore = int(input('수학점수 입력: '))
sciScore = int(input('과학점수 입력: '))
hisScore = int(input('국사점수 입력: '))
scores = [['국어', korScore], ['영어', engScore], ['수학', mathScore], ['과학', sciScore], ['국사', hisScore]]
for subject, score in scores:
if score < minScore:
print('과락 과목: {}, 점수:{}'.format(subject, score))
Q. 학급 학생수가 가장 작은 학급과 가장 많은 학급 출력
studentCnts = [[1, 18], [2, 19], [3, 23], [4, 21], [5, 20], [6, 22], [7, 17]]
maxClass = 0
minClass = 0
maxCnt = 0
minCnt = 0
for classNo, cnt in studentCnts:
if minClass == 0 or minCnt > cnt:
minClass = classNo
minCnt = cnt
if maxClass == 0 or maxCnt < cnt:
maxClass = classNo
maxCnt = cnt
print('학생 수가 가장 적은 학급(학생수): {}학급 {}명'.format(minClass, minCnt))
print('학생 수가 가장 많은 학급(학생수): {}학급 {}명'.format(maxClass, maxCnt))
Q. 학급별 학생 수와 전체학생 수 그리고 평균 학생수 출력
studentCnts = [[1,18], [2,19],[3,23],[4,21],[5,20],[6,22],[7,17]]
sum = 0
avg = 0
n = 0
while n < len(studentCnts):
classNo = studentCnts[n][0]
cnt = studentCnts[n][1]
print('{}학급 학생 수: {}'.format(classNo, cnt))
sum += cnt
n += 1
print('전체 학생 수: {}명'.format(sum))
print('평균 학생 수: {}명'.format(sum/ len(studentCnts)))
Q. while문 이용해서 학급 학생 수가 가장 작은 학급과 가장 많은 학급 출력
studentCnts = [[1, 18], [2, 19],[3, 23],[4, 21],[5, 20],[6, 22],[7, 17]]
maxClass = 0
minClass = 0
maxCnt = 0
minCnt = 0
n = 0
while n < len(studentCnts):
if minCnt == 0 or minCnt > studentCnts[n][1]:
minClass = studentCnts[n][0]
minCnt = studentCnts[n][1]
if maxCnt < studentCnts[n][1]:
maxClass = studentCnts[n][0]
maxCnt = studentCnts[n][1]
n += 1
print('학생 수가 가장 적은 학급(학생수): {}학급 ({}명)'.format(minClass, minCnt))
print('학생 수가 가장 많은 학급(학생수): {}학급 ({}명)'.format(maxClass, maxCnt))
enumerate()함수
for idx, value in enumerate(리스트명)
Q. 사용자가 입력한 문자열에서 공백의 개수 출력
message = input('메시지 입력: ')
cnt = 0
for idx, value in enumerate(message):
if value == ' ':
cnt += 1
print('공백의 개수: {}'.format(cnt))
리스트에 아이템 추가
append()
: 마지막 인덱스에 아이템 추가할 수 있음리스트명.append(추가할 아이템)
Q. append() 함수를 이용하여 마지막 인덱스에 아이템 추가
scores = [['국어', 88], ['영어', 91]]
print('scores: {}'.format(scores))
print('scores length: {}'.format(len(scores)))
print('last index: {}'.format(len(scores) -1))
scores.append(['수학', 96])
print('scores: {}'.format(scores))
print('scores length: {}'.format(len(scores)))
print('last index: {}'.format(len(scores) -1))
print('scroes: {}'.format(scores))
for subject, score in scores:
print('과목: {}, 점수: {}'.format(subject, score))
리스트의 특정 위치에 아이템 추가
insert()
: 특정위치(인덱스)에 아이템 추가리스트명.insert(특정위치, 추가할 아이템)
Q. 오름차순으로 정렬되어 있는 숫자들에 사용자가 입력한 정수를 추가
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: {}'.format(numbers)
리스트의 아이템 삭제
pop()
: 마지막 인덱스에 해당하는 아이템 삭제 pop(n)
: n인덱스에 해당하는 아이템 삭제 Q. 점수표에서 최고/최저 점수 삭제
playerScore = [9.5, 8.9, 9.2, 9.8, 8.8, 9.0]
minScore = 0; maxScore = 0
minScoreIdx = 0; maxScoreIdx = 0
for idx, score in enumerate(playerScore):
if idx == 0 or minScore > score:
minScore = score
minScoreIdx = idx
print(f'minScore: {minScore}, minScoreIdx: {minScoreIdx}')
playerScore.pop(minScoreIdx)
for idx, score in enumerate(playerScore):
if maxScore < score:
maxScoreIdx = idx
maxScore = Score
print(f'maxScore: {maxScore}, maxScoreIdx: {maxScoreIdx}')
playerScore.pop(maxScoreIdx)
print('playerScroes: {}'.format(playerScores))
특정 아이템 삭제
remove()
: 특정 아이템 한 개만 삭제 가능 remove()
로 삭제할 경우 가장 앞의 아이템 한 개가 삭제 Q. 사용자가 입력한 일정을 삭제
myList = ['마케팅 회의', '회의록 정리', '점심 약속', '월간 업무 보고', '치과 방문', '마트 장보기']
print('일정: {}'.format(myList))
removeItem = input('삭제 입력: ')
myList.remove(removeItem)
print('일정: {}'.format(myList))
Q. 사용자가 입력한 과목 삭제
subjects = ['국어', '영어', '수학', '과학', '국사']
print('시험 과목표: {}'.format(subjects))
removeSubjects = input('삭제 과목 입력: ')
while removeSubjects in subjects:
subjects.remove(removeSubjects)
print('시험 과목표: {}'.format(subjects))