리스트란?
학생 100명의 점수를 저장해야 한다고 하자. 100명의 점수를 score1, score2, score3, .. , score100처럼 변수를 100개를 만들어서 저장하기에는 선언되는 변수가 너무 많아지고 관리가 어려워진다. 학생이 100명이 아니라 1000명이 되고, 10000명이 된다면 관리가 점점 불가능에 가까워질 것이다.
그래서 탄생한 것이 리스트(list)이다. 리스트를 사용하면 모든 학생들의 점수를 하나의 리스트에 저장할 수 있고, 새로운 학생이 추가되더라도 쉽게 추가할 수 있다.
리스트 생성하기
리스트는 대괄호([]) 안에 값을 나열하면 생성된다.
scores = [73, 34, 98, 55, 89, 100, 79, 54]
공백 리스트를 생성한 후 값을 추가할 수도 있다. 리스트에 값을 추가하려면 append() 메소드를 사용한다.
scores = []
scores.append(45)
scores.append(98)
scores.append(72)
print(scores) # [45, 98, 72]
참고로, 파이썬에서는 다양한 종류의 데이터를 하나의 리스트 안에 저장할 수 있으며, 리스트 안에 또 다른 리스트를 포함시키는 것도 가능한다.
myList = [1, 'computer', 3.4]
myList = ['apple', [8, 4, 7]]
리스트 요소 접근하기
리스트의 요소에 접근하려면 리스트의 이름을 쓰고 대괄호 안에 번호를 표시하면 된다. 리스트 요소의 번호를 인덱스(index)라고 한다.
주의할 점은 인덱스 번호는 0번부터 시작한다는 점이다. 따라서 유효한 인덱스의 범위는 0부터 (리스트 크기 - 1)까지이다. 리스트의 첫 번째 요소의 인덱스 번호는 1이 아니라 0이 아니라는 점에 주의하자.
scores = [73, 34, 98, 55, 89, 100, 79, 54]
print(scores[0]) # 73
print(scores[1]) # 34
print(scores[7]) # 54
리스트 요소는 변수와 100% 동일하기 때문에 리스트 요소에 값을 저장할 수 있고 저장된 값을 꺼낼 수도 있다. 변수나 수식도 인덱스로 사용할 수 있다.
scores[0] = 80 # 0번째 요소에 80을 저장
scores[1] = scores[0] # 0번째 요소의 값을 1번째 요소로 복사
scores[i+2] = 20 # (i+2)번째 요소에 20을 저장
리스트 순회하기
for 반복문을 활용하여 리스트를 순회할 수 있다. 단순히 리스트 요소의 값을 알고 싶은 경우, 다음과 같은 형식을 사용할 수 있다.
for element in scores:
print(element)
scores 리스트의 첫 요소부터 변수 element에 할당되고 반복문 안의 문장들이 실행된다. 이 과정이 두 번째 요소, 세 번째 요소로 넘어가며 차례로 실행되고 마지막 요소까지 실행되면 반복문이 종료된다.
또 다른 방법으로는 리스트의 크기를 반환하는 len() 함수를 사용하는 방법이 있다. 위의 방법보다는 아주 약간 더 복잡하지만, 리스트의 길이를 고려해야 하는 경우에 유용하게 사용할 수 있다.
for i in range(len(scores)):
print(i, score[i])
list 클래스
리스트는 list 클래스에 의하여 생성되는 객체이기 때문에 list 클래스의 생성자를 이용해서도 리스트를 생성할 수 있다. 이 방법으로 생성한 리스트는 위에서 언급한 방법으로 생성한 리스트와 결과적으로 동일하다.
list1 = list() # []
list2 = list('Hello') # ['H', 'e', 'l', 'l', 'o']
list3 = list(range(0, 5)) # [0, 1, 2, 3, 4]
정리
서로 관련된 데이터를 차례로 접근하여 처리하고 싶은 경우 리스트를 사용한다. 리스트를 사용하면 서로 관련된 데이터들에 하나하나 이름을 붙이지 않고 전체 집단에 하나의 이름을 부여한 다음, 숫자로 된 번호를 통하여 각각의 데이터에 접근할 수 있어 편리하다.
관련 글
'Language > Python' 카테고리의 다른 글
[Python] 파이썬 리스트 비교, 정렬 (0) | 2025.01.15 |
---|---|
[Python] 파이썬 리스트의 기초 연산들 (요소 추가, 삭제, 삽입 등) (0) | 2025.01.15 |
[Python] 파이썬 인덱싱과 슬라이싱 (0) | 2025.01.14 |
[Python] 파이썬 시퀀스 데이터 타입 (0) | 2025.01.14 |
[Python] 달력 출력 프로그램 (0) | 2025.01.10 |