1. 리스트의 개요
- 리스트의 필요성
학생들의 성적을 처리하는 프로그램을 작성한다고 하였을 때, 학생 한 명의 점수를 저장할 때는 변수 하나를 생성하면 됩니다. 하지만, 100명의 학생의 점수를 저장하기 위해서는 100개의 변수가 필요합니다. 변수 이름도 다르게 만들어야 하므로 많은 데이터를 처리하기에는 너무 비효율적 입니다.
그래서 많은 데이터를 처리할 때는 데이터를 묶어서 처리하는 것 효율적이므로 이러한 것을 컬렉션(Collection)이라고 하고, 파이썬에서는 리스트(list), 튜플(tuple), 딕셔너리(dictionary), 셑(set) 등이 있습니다.
- 리스트의 구조
순서가 있는 수정가능한 데이터의 묶음입니다. 리스트에 저장되는 각각의 데이터를 항목(item) 또는 원소(element)라고 하고, 항목은 숫자, 문자, 다른 리스트 등 다양한 종류로 구성할 수 있습니다. 여기서 리스트(list)와 배열(array)를 구분할 필요가 있는데, 리스트는 다양한 데이터형을 가진 항목을 저장할 수 있지만, 배열른 동일한 데이터 형을 가진 항목만 저장할 수 있습니다. 파이썬에서는 배열을 numpy라는 라이브러리에서 제공됩니다.
- 리스트 생성
리스트를 생성하는 방법은 [ ](대괄호) 붙이고 항목 간에는 쉼표(,)로 구분해서 나열합니다. 리스트는 순서가 있는 데이터 구조이므로 각 항목을 순서대로 인덱스(index)로 구분합니다. 인덱스는 0부터 시작합니다.
리스트명 = [값1, 값2, 값2, ... 값n] aa = [90, 85, 79, 93, 87] |
예제 : 성적처리 프로그램(총합계와 평균을 구하는 프로그램)
- 기본형 변수를 사용할 경우
a1 = 90 a2 = 85 a3 = 79 a4 = 93 a5 = 87 total = a1+a2+a3+a4+a5 print("합계 : ", total) print("평균 : ", total/5) |
- 리스트를 사용할 경우: 반복문을 사용해서 합을 계산
aa=[90, 85, 79, 93, 87] total = 0 for val in aa : total += val print("합계 : ", total) print("평균 : ", total/len(aa)) |
2. 리스트의 사용
- 인덱싱(indexing) : 리스트에 저장된 각 항목은 인덱스가 부여되는데, 이 인덱스를 사용한 항목의 참조를 인덱싱이라고 합니다. 즉, 인덱스를 이용하여 항목의 값은 수정하거나 읽어오는 작업입니다.
- 슬라이싱(slicing)은 리스느의 항목을 특정한 구간별로 선택하여 잘라내는 기능입니다. 구간을 명시하기 위해서는 리스트[start:end] 문법을 사용합니다.
예제 : 리스트 인덱싱 예제
예제 : 반복문을 사용하여 항목 하나씩 출력하는 프로그램
alist = ['홍길동', '김수현', 7.8, 6, ['a', 'b']] for x in alist : print(x, end=' ') |
- 항목의 추가 및 삽입과 삭제
리스트의 조작에 관련된 함수는 아래의 표와 같습니다.
- 리스트의 덧셈과 곱셈
- 리스트의 덧셈은 항목들이 합쳐져 하나의 리스트가 됩니다.
- 리스트의 곱셈은 곱한 횟수만킄 리스트가 반복 됩니다.
>>> numList = [10, 20, 30] >>> myList = [40, 50, 60] >>> print(numList + myList) [10, 20, 30, 40, 50, 60] >>> print(numList * 3) [10, 20, 30, 10, 20, 30, 10, 20, 30] |
3. 리스트의 활용
실습1 : 리스트를 이용하여 수강생 5명의 점수를 입력받아 평균을 출력하는 프로그램을 작성하라
numbers=[] for _ in range(5): numbers.append(int(input("점수 입력 : "))) print("평균 : ", sum(numbers)/len(numbers)) |