● 리스트 통계값

=> 합계 : 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

+ Recent posts