파이썬 리스트(List) 완벽 가이드: 생성, 접근, 수정, 메서드 총정리
이전 페이지 다음 페이지
파이썬에서 가장 기본적인 데이터 구조는 시퀀스(sequence)입니다. 시퀀스의 각 요소에는 번호(위치 또는 인덱스)가 할당됩니다. 첫 번째 인덱스는 0, 두 번째는 1, 이런 식입니다.
파이썬에는 6가지 내장 시퀀스 타입이 있지만, 가장 흔한 것은 리스트와 튜플입니다.
모든 시퀀스 타입으로 할 수 있는 작업들이 있습니다. 인덱싱, 슬라이싱, 추가, 곱셈, 멤버십 검사 등이 포함됩니다. 또한 파이썬에는 시퀀스 길이 찾기, 최대/최소 요소 찾기 위한 내장 함수가 있습니다.
파이썬 리스트
리스트는 파이썬에서 가장 다재다능한 데이터 타입으로, 쉼표로 구분된 값(항목)들을 대괄호 사이에 쓴 형태로 표현됩니다. 리스트의 중요한 점은 리스트의 항목들이 같은 타입일 필요가 없다는 것입니다.
리스트 생성은 다른 쉼표로 구분된 값들을 대괄호 사이에 넣는 것만큼 간단합니다. 예를 들어:
list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5];
list3 = ["a", "b", "c", "d"]
문자열 인덱스와 유사하게 리스트 인덱스는 0부터 시작하며, 리스트도 슬라이싱, 연결 등이 가능합니다.
리스트 값 접근
리스트에서 값에 접근하려면 인덱스나 인덱스들과 함께 대괄호를 사용하여 슬라이싱하여 해당 인덱스에서 사용 가능한 값을 얻으세요. 예를 들어:
Live Demo
#!/usr/bin/python
list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5, 6, 7];
print "list1[0]: ", list1[0]
print "list2[1:5]: ", list2[1:5]
위 코드를 실행하면 다음 결과가 생성됩니다.
list1[0]: physics
list2[1:5]: [2, 3, 4, 5]
리스트 업데이트
할당 연산자 왼쪽에서 슬라이스를 주어 단일 또는 여러 리스트 요소를 업데이트할 수 있으며, append() 메서드로 리스트에 요소를 추가할 수 있습니다. 예를 들어:
Live Demo
#!/usr/bin/python
list = ['physics', 'chemistry', 1997, 2000];
print "Value available at index 2 : "
print list[2]
list[2] = 2001;
print "New value available at index 2 : "
print list[2]
참고 - append() 메서드는 이후 섹션에서 다룹니다.
위 코드를 실행하면 다음 결과가 생성됩니다.
Value available at index 2 : 1997
New value available at index 2 : 2001
리스트 요소 삭제
리스트 요소를 제거하려면 정확히 어떤 요소를 삭제하는지 알 때 del 문을 사용하거나, 모를 때 remove() 메서드를 사용할 수 있습니다. 예를 들어:
Live Demo
#!/usr/bin/python
list1 = ['physics', 'chemistry', 1997, 2000];
print list1
del list1[2];
print "After deleting value at index 2 : "
print list1
위 코드를 실행하면 다음 결과가 생성됩니다.
['physics', 'chemistry', 1997, 2000]
After deleting value at index 2 : ['physics', 'chemistry', 2000]
참고 - remove() 메서드는 이후 섹션에서 다룹니다.
기본 리스트 연산
리스트는 문자열과 매우 비슷하게 +와 * 연산자에 반응합니다. 여기서는 연결과 반복을 의미하지만, 결과는 문자열이 아닌 새 리스트입니다.
사실 리스트는 이전 장에서 문자열에 사용했던 모든 일반 시퀀스 연산에 반응합니다.
| 파이썬 표현식 | 결과 | 설명 |
| len([1, 2, 3]) | 3 | 길이 |
| [1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 연결 |
| ['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 반복 |
| 3 in [1, 2, 3] | True | 멤버십 |
| for x in [1, 2, 3]: print x, | 1 2 3 | 반복 |
인덱싱, 슬라이싱, 매트릭스
리스트는 시퀀스이므로 인덱싱과 슬라이싱이 문자열과 같은 방식으로 작동합니다.
다음 입력을 가정합니다.
L = ['spam', 'Spam', 'SPAM!']
| 파이썬 표현식 | 결과 | 설명 |
| L[2] | SPAM! | 오프셋은 0부터 시작 |
| L[-2] | Spam | 음수: 오른쪽부터 카운트 |
| L[1:] | ['Spam', 'SPAM!'] | 슬라이싱으로 구간 가져오기 |
내장 리스트 함수 및 메서드
파이썬에는 다음 리스트 함수가 포함되어 있습니다.
| 번호 | 함수 및 설명 |
| 1 | cmp(list1, list2)
두 리스트의 요소 비교. |
| 2 | len(list)
리스트 전체 길이 반환. |
| 3 | max(list)
최댓값을 가진 리스트 항목 반환. |
| 4 | min(list)
최솟값을 가진 리스트 항목 반환. |
| 5 | list(seq)
튜플을 리스트로 변환. |
파이썬에는 다음 리스트 메서드가 포함되어 있습니다.
| 번호 | 메서드 및 설명 |
| 1 | list.append(obj)
객체 obj를 리스트에 추가. |
| 2 | list.count(obj)
obj가 리스트에서 발생한 횟수 반환. |
| 3 | list.extend(seq)
seq의 내용을 리스트에 추가. |
| 4 | list.index(obj)
obj가 나타나는 리스트의 가장 낮은 인덱스 반환. |
| 5 | list.insert(index, obj)
객체 obj를 오프셋 index에 삽입. |
| 6 | list.pop(obj=list[-1])
마지막 객체 또는 obj를 리스트에서 제거하고 반환. |
| 7 | list.remove(obj)
객체 obj를 리스트에서 제거. |
| 8 | list.reverse()
리스트 객체들을 제자리에서 역순으로. |
| 9 | list.sort([func])
리스트 객체 정렬, 비교 함수 func 주어지면 사용. |