리스트는 파이썬에서 시퀀스(Sequence)라고 부르는 자료형입니다.
변수에서는 한개의 이름으로 하나의 값을 저장했었다면 리스트에서는 여러개의 값을 하나의 이름으로 저장할 수 있습니다.
리스트에는 순서가 있기 때문에 자료를 꺼낼 때 인덱스를 사용하면 빠르게 접근할 수 있습니다.
프로그램 언어에서 사용하는 배열(Array)이라는 자료형이 있습니다. 리스트는 배열과 비슷하지만 좀더 다양한 기능을 가지고 있습니다.
개념으로만 이해하려고 하면 잘와닿지 않기 때문에 코드를 실행하며 알아보겠습니다.
파이썬 리스트 만들기
목차
myList = [1, 2, 3, 4, 5] print(myList)
[1, 2, 3, 4, 5]
[ ] 리스트는 대괄호를 사용합니다. 이제부터 괄호의 모양 [ ] ( ) { } 을 파악하는 것이 중요한데 괄호의 종류에 따라 자료형이 달라지기 때문입니다.
myList = [ 값, 값, 값 …. ]
이렇게 갈 수 있다는 것은 리스트가 가변객체(mutable)라는 것을 의미합니다. 위에서 리스트는 시퀀스(sequence) 라고도 했죠?
즉 리스트는 시퀀스와 가변객체의 속성을 가지고 있는 자료형입니다.
시퀀스의 연산의 특징은 인덱스를 사용할 수 있다는 것입니다.
myList = [34, 54, 7, 3, 2] for i in range(len(myList)): print(myList[i], end=' ')
34 54 7 3 2
myList[인덱스] 를 사용했죠?
myList[0] myList[1] myList[2] myList[3] myList[4]
5개의 값을 인덱스로 가져올 수 있습니다. 리스트 이름 뒤에 [ ] 괄호안에 인덱스를 써넣습니다. 인덱스는 0부터 시작하고 n-1 에서 끝납니다.
len( ) 함수를 사용하면 리스트의 요소 개수 n을 알 수 있습니다. range 함수는 0부터 n-1 을 사용하므로 for 문에서 인덱스에 i를 그대로 사용할 수 있습니다.
슬라이스 연산자(시퀀스)
슬라이스 연산은 시퀀스의 특징입니다.
myList = [34, 54, 7, 3, 2] print(myList[0:2])
[34, 54]
myList[0:2] 는 인덱스 0, 1 (2의 전까지) 를 가져옵니다.
myList = [34, 54, 7] print(myList + [2, 4, 5])
[34, 54, 7, 2, 4, 5]
+ 연산자로 인덱스를 이어 붙이는 것도 가능합니다. * 연산자는 리스트를 반복합니다. 이렇게 연산을 하더라도 원본 리스트는 할당하지 않는 이상 변경되지 않습니다.
myList = ["dog", 75, 30.7] print(myList)
['dog', 75, 30.7]
리스트에는 정수 뿐 아니라 문자, 부동소수점도 저장할 수 있습니다. 섞어서 저장하는 것도 가능하죠.
파이썬 리스트 메소드
append, pop 함수
myList = [7] myList.append(10) myList.append(24) print(myList) myList.pop() print(myList)
[7, 10, 24] [7, 10]
리스트를 추가하거나 삭제할 때 사용할 수 있는 메소드는 append 와 pop 입니다.
가변적이기 때문에 데이터를 추가하거나 삭제하는 것이 가능합니다.
흔히 배열(array)과 비교할 수 있는데 배열은 타입과 길이가 고정되지만 리스트는 타입과 길이에 제한이 없습니다.
pop 함수는 ( ) 매개변수에 인덱스를 지정하여 특정 값을 삭제할 수 있습니다. 그냥 ( ) 은 맨마지막에 추가한 값을 꺼내옵니다. 데이터는 삭제됩니다. Pop은 스택구조에서 쓰는 Push 의 반대 함수인데 리스트에도 구현이 되있습니다.
파이썬 내장 함수 (Built-in Function) 중에는 리스트를 매개변수로 사용가능한 함수들이 다양하게 있고 리스트가 가진 메소드도 있고 리스트 연산자도 있습니다.
이것은 파이썬의 전체적 개념을 정리하기 위한 포스트이므로 모든 것을 다루지는 않습니다. 파이썬 Doc 을 참고하시길 바랍니다.
sort, reverse 함수
정렬하는 메소드입니다.
이 메소드를 사용하면 실제로 리스트 내부에서 정렬을 합니다.
sort 는 오름차순 정렬이고 reverse 는 역순정렬입니다.
myList = ['banana', 'tomato', 'kiwi', 'apple', 'orange'] myList.sort() print(myList) myList.reverse() print(myList)
['apple', 'banana', 'kiwi', 'orange', 'tomato'] ['tomato', 'orange', 'kiwi', 'banana', 'apple']
영문만 되는게 아니라 한글도 정렬이 됩니다.
myList = ['나', '가', '다', '마', '라'] myList.sort() print(myList) myList.reverse() print(myList)
['가', '나', '다', '라', '마'] ['마', '라', '다', '나', '가']
파이썬은 유니코드를 사용하기 때문에 한글도 정렬이 됩니다.
리스트 중첩(Nested List)
파이썬 리스트 중첩시켜 사용하면 2차원 이상의 배열을 사용할 수 있습니다. (3차원도 가능)
사용법은 리스트안에 리스트를 포함시키는 것 입니다.
myList = [[7, 4], [3, 5]] print(myList[0][0]) print(myList[0][1]) print(myList[1][0]) print(myList[1][1])
7 4 3 5
리스트의 중첩은 유연합니다. 딕셔너리나 튜플 등의 다른 시퀀스 자료형도 리스트에 포함시킬 수 있습니다.
파이썬 리스트가 시퀀스와 가변형의 특징을 가지기 때문에 인덱스를 사용하여 빠르게 접근하는 것도 가능하고, append와 pop 메소드로 리스트의 추가와 삭제가 가능합니다.
myList = [[7, 4], [3, 5]] print(myList[0]) print(myList[1])
[7, 4] [3, 5]
2차원 리스트 일 때는 리스트의 인덱스를 한번 사용하여 행을 가져올 수 있습니다.
요약 – 학습방법
파이썬 리스트의 기본에 대하여 알아봤습니다.
리스트는 매우 유용하게 사용될 것 입니다. 파이썬을 배우는 모든 과정에서 리스트를 사용하는 새로운 방식을 알아가게 될 것 입니다.
프로그래밍 언어에서 사용하기 쉽게 설계된 자료구조일수록 내부의 동작은 훨씬 복잡해집니다. 리스트가 그런 예로 사용법은 쉽지만 깊이 이해하기는 어렵습니다.
리스트에 대하여는 차후에 상세하게 다루겠습니다. 이 코스는 파이썬 독학의 첫걸음으로 작성되었기 때문에 세부적으로 깊게 들어가지 않습니다.
프로그래밍은 처음부터 세부적으로 너무 깊게 들어가면 금방 싫증을 내기 쉽습니다.
무리하지 않고 꾸준히 하는 것이 흥미를 잃지 않는 지름길입니다. 이 코스는 최대한 지루하지 않도록 구성했습니다만, 마지막에 프로그래밍을 깨우치는 것은 오로지 학습자의 의지입니다.
이제 리스트의 다음 챕터부터는 점점 난이도가 올라 가기 때문에 기초를 충분히 연습 하시길 바랍니다. 진행이 어려울 때는 언제라도 처음으로 돌아와서 다시 한번 기초를 쌓는다면 끝까지 완주할 힘을 얻게 될 것입니다.
외부링크
파이썬 코딩 1-4 | 파이썬의 자료형 | 리스트 기본