● 리스트 통계값
=> 합계 : sum(리스트명) -> 리스트의 모든 항목이 숫자여야한다.
=> 최소값: min(리스트명) -> 문자열과 숫자가 혼합되어있는 항목이 있어선 안된다
=> 최대값 : max(리스트명)
=> 항목의 갯수 : 리스트명.count(항목) -> 중복된 값의 갯수가 몇개인지 구분
l = [1,2,3,4,5,3,4,5]
print('항목수 : ', len(l))
print('합계 : ', sum(l))
print('최소값 : ', min(l))
print('최대값 : ', max(l))
print('평균 : ', sum(l) / len(l))
print('항목 5의 갯수 : ', l.count(5))
항목수 : 8
합계 : 27
최소값 : 1
최대값 : 5
평균 : 3.375
항목 5의 갯수 : 2
● 리스트 정렬
=> 리스트명.sort() -> 리스트 원본을 정렬 (오름차순 정렬)
=> 리스트명.sort(reverse=True) (내림차순 정렬)
=> sorted(리스트명) -> 리스트 원본은 건드리지 않고 정렬된 새로운 리스트를 반환
=> sorted(리스트명,reverse=True)
=> 리스트명.reverse() -> 리스트를 역순으로 뒤집는다.
friends = ['수지','지은','찬혁','수현','범준']
friends.sort()
print(friends) # 다시 원래대로의 순서로 되돌릴 수 없다.
['범준', '수지', '수현', '지은', '찬혁']
friends.sort(reverse=True)
print(friends)
['찬혁', '지은', '수현', '수지', '범준']
● 리스트 복사본을 만들어서 정렬
friends = ['수지','지은','찬혁','수현','범준']
a = sorted(friends)
print(a)
['범준', '수지', '수현', '지은', '찬혁']
● 리스트 순서 뒤집기
friends = ['수지','지은','찬혁','수현','범준']
friends.reverse()
print(friends)
['범준', '수현', '찬혁', '지은', '수지']
※ 심화
● 2차원 리스트 다루기
# 표는 행과 열로 이루어진 이차원 구조이다.
# 리스트 안에 리스트를 중첩하여 사용함으로써 표를 표현할 수 있다.
# 2차원 리스트 만들기.
# 0열 1열 2열
# 0행 10 20 30
# 1행 40 50 60 -> 만들어보기
list = [[10,20,30],[40,50,60]]
# list[0] = [10,20,30]
# list[1] = [40,50,60]
# 30 추출하기
print(list[0][2])
# 1행 2열 추출하기
print(list[1][2])
30
60
※ 연습 1번
# file_list에서 파일명과 확장자를 분리하여 다음과같은 형태로
# 저장하는 리스트를 만들어봅시다.
# 파일명 확장자
# file1 py
# file2 txt
# file3 pptx
file_list = ['file1.py','file2.txt','file.pptx']
name_extension = []
for i in file_list:
print(i)
file1.py
file2.txt
file.pptx
for i in file_list:
print(i.split('.')) # split('구분자') => 구분자로 문자등을 분리하여 리스트 형태로 만든다.
name_extension.append(i.split('.'))
['file1', 'py']
['file2', 'txt']
['file', 'pptx']
print(name_extension)
[['file1', 'py'], ['file2', 'txt'], ['file', 'pptx']]
※ 연습 2번
# 학생별 총점, 평균구하기
# 다음은 학생 별 [국어,영어,수학] 점수가 저장된 리스트이다.
# score_list =[[96,84,80],[96,86,76],[76,95,83],[89,96,69],[90,76,91]]
# 각 학생의 세 과목의 성적의 [총점,평균]을 구하여 리스트에 담으시오.
# (평균은 반올림하여 소수점 1자리까지 표현한다.)
score_list =[[96,84,80],[96,86,76],[76,95,83],[89,96,69],[90,76,91]]
stu_scores = []
for i in score_list:
total = sum(i)
average = total / 3
stu_scores.append([total,round(average,1)]) # round(값,소수점자리수표시)
print(stu_scores)
[[260, 86.7], [258, 86.0], [254, 84.7], [254, 84.7], [257, 85.7]]
--> 헷갈린다면, 생각해보자. score_list[0] = [96,84,80] 이다. 그리고 for문은 총 5번 반복된다.
※ 연습 3번
# score_list =[[96,84,80],[96,86,76],[76,95,83],[89,96,69],[90,76,91]]
# 각 과목의 리스트를 분리하고 과목별 평균을 구해봅시다.
# 평균은 소수점 1자리까지 출력한다.
score_list =[[96,84,80],[96,86,76],[76,95,83],[89,96,69],[90,76,91]]
for i in score_list:
print(i)
[96, 84, 80]
[96, 86, 76]
[76, 95, 83]
[89, 96, 69]
[90, 76, 91]
--> 각 과목의 리스트를 어떻게 분리할까?
# 사전 준비
kor_list=[]
eng_list=[]
math_list=[]
kor_average=0
eng_average=0
math_average=0
for i in score_list:
kor_list.append(i[0])
eng_list.append(i[1])
math_list.append(i[2])
print('kor_list:',kor_list)
print('eng_list:',eng_list)
print('math_list',math_list)
kor_list: [96, 96, 76, 89, 90]
eng_list: [84, 86, 95, 96, 76]
math_list [80, 76, 83, 69, 91]
--> 이해해보자. for문의 반복변수 i는 이미 score_list[0],score_list[1],score_list[2] 이다.
--> 따라서 i[0] = score_list[0][0]
kor_average = sum(kor_list)/len(kor_list)
eng_average = sum(eng_list)/len(eng_list)
math_average = sum(math_list)/len(math_list)
print(round(kor_average,1))
print(round(eng_average,1))
print(round(math_average),1)
89.4
87.4
80 1
--> 결과가 헷갈리다면, 차근차근 한줄씩 print를 하여 결과값을 확인하여 확실히 알고 넘어가야한다.
※ 랜덤 항목 추출하기 (보너스)
menulist = ['한식','일식','중식','양식','분식','이탈리아식']
print('오늘은 뭘 먹지?')
오늘은 뭘 먹지?
# 메뉴를 입력받아 랜덤으로 메뉴를 정하는 프로그램을 작성해봅시다.
# 공백('')을 입력할 때까지 메뉴를 입력받습니다.
import random
random.choice(menulist)
'분식'
menulist = []
while True:
menu = input('메뉴:')
if menu == '':
break
menulist.append(menu)
print('오늘의 메뉴는 :',random.choice(menulist))
메뉴:치킨
메뉴:파스타
메뉴:닭
메뉴:
오늘의 메뉴는 : 치킨
* 리스트의 활용법은 무궁무진하다. 사용자가 적절하게 사용하려면 정확한 이해가 필요하다.
'Python 기초 공부' 카테고리의 다른 글
딕셔너리(Dictionary) 활용해보기 (0) | 2023.02.20 |
---|---|
딕셔너리(Dictionary) (0) | 2023.02.20 |
인덱싱 / 슬라이싱 / 리스트 변경 (0) | 2023.02.19 |
리스트와 튜플 (2) | 2023.02.18 |
알고리즘 연습 (1) | 2023.02.18 |