17. Python을 효과적으로 사용하기 위한 첫 걸음, 리스트(List)를 소개합니다.

안녕하세요. 언휴예요.

프로그래밍 언어를 익힌다는 것은 학문적 지식을 쌓는 의미도 있겠지만 실용적으로 얼마나 유용하게 사용할 수 있는가에 초점을 둘 필요가 있다고 생각합니다.

물론, 프로그래밍 언어는 프로그래머의 가장 기본적인 부분이라 깊이가 깊어지면 다양한 활동에서 이득을 갖을 수 있겠죠. 그럼에도 프로그래밍 언어를 학문적으로만 접근하는 것보다는 실용적으로 접근하는 것이 학문적인 지식을 쌓는데도 유리하다고 개인적으로 생각합니다. 이러한 사견에 이의를 제기하실 분도 있을테고 맞장구 쳐 주실 분들도 계시겠지만 이를 논하는 것은 온라인 카페나 다른 BBS로 넘기고 저는 능글맞게 본론으로 넘어갈게요.

프로그래밍을 하다 보면 같은 종류의 자료를 보관하고 원하는 것을 검색하고 필요한 형태로 수정하는 등의 작업은 늘 있기 마련이예요. 이러한 특징을 갖기에 자료구조와 알고리즘은 프로그래머의 소양 중에 언어 다음으로 두는 이들이 많아요.

Python에서는 다양한 종류의 자료구조(여기에서는 컬렉션이라고도 부르고 있음)를 제공하고 있어요. 앞에서 다루었던 튜플(Tuples)도 자료구조의 하나예요.

앞에서 다루었던 튜플은 원소의 값을 변경하지 못하는 특징때문에 프로그램 동작 중에 추가, 변경, 삭제, 검색 등의 작업을 해야 할 때는 적합하지 않아요. 이러한 한계를 극복할 수 있는 형식이 리스트(List)예요.

이번에 소개할 리스트(List)는 튜플처럼 순차 컬렉션이면서 변경할 수 있어 튜플의 한계를 극복할 수 있어요. 자료의 양이 많고 복잡해지면 보다 효과적으로 검색할 수 있는 컬렉션을 사용해야겠지만 가장 기본적인 컬렉션이예요.

이번에는 모두 발언이 참 기네요. 아무래도 프로그램이라고 얘기할 수 있는 수준이라면 최소한 컬렉션에 자료를 보관하여 사용하는 것은 필수적이라는 생각에 잡(Job?)소리가 많았네요.

튜플은 선언하면서 원소를 초기화할 때 괄호()를 사용했어요. 리스트는 대괄호 []를 사용합니다. len으로 원소 개수를 구하거나 for문을 사용하거나 인덱스를 사용하는 방법은 튜플과 마찬가지예요.

#튜플과 리스트
def View(collection):
    cnt = len(collection)
    print("원소 개수:",cnt)

    for value in collection:
        print(value,end=' ')
    print()

    for i in range(0, cnt):
        print("[{0}]:{1}".format(i,collection[i]),end=' ')
    print()

tup1 = (1,2,3,'a','b')
list1 = [6,7,8,'x','y','z']
print("===Tuples===")
View(tup1)

print("===List===")
View(list1)
[그림 1] 튜플과 리스트
[그림 1] 튜플과 리스트

먼저 튜플과 리스트의 극명한 차이점을 확인하고 넘어갈게요. 다음은 1,2,3을 원소로 하는 튜플과 리스트를 선언하고 원소의 값을 변경하는 코드입니다. 당연히 튜플은 원소를 변경할 수 없어요.

먼저 1, 2, 3을 원소로 하는 리스트를 선언하고 인덱스 1(두 번째 원소)의 값을 4로 변경하는 코드입니다. 리스트를 선언할 때는 대괄호 [ ]를 사용합니다.

#튜플과 리스트의 차이 비교 - 리스트
list1 = [1,2,3]
print(list1)
list1[1]=4
print(list1)
[그림 2] 튜플과 리스트의 차이 비교 – 리스트
[그림 2] 튜플과 리스트의 차이 비교 – 리스트

다음은 튜플을 사용한 예제 코드입니다. 화면을 보는 것처럼 원소를 변경하는 것을 수행할 수 없어서 오류가 발생하는 것을 확인할 수 있어요.

#튜플과 리스트의 차이 비교 - 목록
tup1 = (1,2,3)
print(tup1)
tup1[1]=4
print(tup1)
[그림 3] 튜플과 리스트의 차이 비교 - 튜플
[그림 3] 튜플과 리스트의 차이 비교 – 튜플

이 외에 리스트는 원소 항목을 지우거나 원하는 위치에 추가, 분리 등의 많은 작업을 할 수 있어요. 다음 강의부터 리스트를 효과적으로 사용할 수 있는 다양한 방법을 살펴보기로 해요.

오늘도 행복한 하루~

*웹/앱 환경의 발달에 맞추어 강의를 3분 정도의 시간에 볼 수 있게 작성하고 있어요. 자신의 목적에 맞게 속도를 조절하세요.*