본 튜토리얼에서는 파이썬 리스트 메소드를 활용하여 리스트에 요소를 추가, 변경 및 제거하는 여러 방법에 대해 상세히 알아봅니다.
파이썬 프로그래밍을 시작할 때, 리스트는 가장 먼저 배우게 되는 기본 내장 데이터 구조 중 하나입니다. 앞으로 몇 분 동안, 파이썬 리스트의 핵심 내용을 간략히 복습하고, 리스트 작업을 할 때 유용하게 사용할 수 있는 다양한 리스트 메소드를 자세히 살펴보겠습니다.
자, 이제 시작해 볼까요!
파이썬 리스트 개요
파이썬에서 리스트는 동일하거나 상이한 데이터 유형의 항목들을 담을 수 있는 자료 구조입니다. for
루프와 같은 반복 구문을 사용하여 리스트 내의 항목들을 순회하고 접근할 수 있습니다.
모든 파이썬 이터러블과 마찬가지로, 리스트는 0부터 시작하는 인덱싱을 따르며, 슬라이싱 연산을 지원합니다.
가변적인 컬렉션이므로, 리스트는 제자리에서 수정될 수 있습니다. 이는 리스트에 요소를 추가 및 삭제하고, 특정 순서로 요소를 정렬하거나, 요소의 순서를 반전시키는 등의 작업을 포함합니다. 파이썬의 내장 리스트 메소드들은 이러한 작업들을 수행하는 데 매우 유용합니다.
다음 섹션에서는 몇 가지 실용적인 파이썬 리스트 메소드를 자세히 살펴보겠습니다.
파이썬의 내장 리스트 메소드
이 섹션에서는 여러 유용한 리스트 메소드들을 학습합니다. 각 메소드가 실제로 어떻게 작동하는지 확인하기 위해 코드 예제를 함께 실행해 보겠습니다.
먼저, pgm_langs
라는 리스트를 사용하겠습니다. 이 리스트는 인기 있는 프로그래밍 언어의 이름을 담은 문자열 리스트입니다.
pgm_langs = ['Python','Go','Rust','JavaScript']
insert()
메소드로 리스트 항목 삽입하기
특정 인덱스 위치에 요소를 삽입할 수 있습니다. 이를 위해 insert()
메소드를 사용할 수 있습니다. insert()
리스트 메소드 호출 시에는 다음 두 가지 매개변수를 전달해야 합니다.
- 요소가 삽입되어야 할 인덱스 위치
- 삽입할 요소
insert()
메소드를 사용하여 인덱스 1 위치에 ‘Scala’를 삽입해 보겠습니다.
pgm_langs = ['Python','Go','Rust','JavaScript']
pgm_langs.insert(1,'Scala')
print(pgm_langs)
# 출력 결과: ['Python', 'Scala', 'Go', 'Rust', 'JavaScript']
append()
메소드를 사용하여 리스트에 항목 추가하기
리스트의 끝에 요소를 추가해야 할 때가 있습니다. 이럴 때에는 append()
메소드를 사용하면 됩니다.
append()
메소드를 사용하여 리스트 끝에 문자열 ‘Java’를 추가해 보겠습니다.
pgm_langs.append('Java')
print(pgm_langs)
# 출력 결과: ['Python', 'Scala', 'Go', 'Rust', 'JavaScript', 'Java']
extend()
메소드로 여러 개의 항목 추가하기
append()
메소드를 사용하여 단일 항목을 추가할 수 있다는 것을 알고 있습니다. 그렇다면 여러 항목, 예를 들어 다른 리스트의 항목들을 기존 리스트에 추가하려면 어떻게 해야 할까요? extend()
메소드는 이를 위한 편리한 구문을 제공합니다.
extend()
메소드를 사용하여 more_langs
리스트의 요소들을 pgm_langs
리스트에 추가해 보겠습니다.
more_langs = ['C++','C#','C']
pgm_langs.extend(more_langs)
print(pgm_langs)
# 출력 결과: ['Python', 'Scala', 'Go', 'Rust', 'JavaScript', 'Java', 'C++', 'C#', 'C']
항목 리스트를 순회하면서 append()
메소드를 사용하여 한 번에 하나의 항목을 추가할 수도 있습니다. 그러나 이것은 코드가 길어지고 번거롭습니다. extend()
메소드를 사용하는 것이 훨씬 더 편리합니다.
for lang in more_langs:
pgm_langs.append(lang)
reverse()
메소드를 사용하여 리스트 반전하기
리스트 내 요소들의 순서를 반전시키려면 간단히 reverse()
메소드를 호출하면 됩니다.
pgm_langs
리스트가 제자리에서 반전된 것을 확인할 수 있습니다.
pgm_langs.reverse()
print(pgm_langs)
# 출력 결과: ['C', 'C#', 'C++', 'Java', 'JavaScript', 'Rust', 'Go', 'Scala', 'Python']
sort()
메소드를 사용하여 리스트 정렬하기
sort()
메소드를 사용하여 파이썬 리스트를 제자리에서 정렬할 수 있습니다. pgm_langs
는 문자열 리스트이므로 알파벳 순으로 정렬되는 것을 볼 수 있습니다.
pgm_langs.sort()
print(pgm_langs)
# 출력 결과: ['C', 'C#', 'C++', 'Go', 'Java', 'JavaScript', 'Python', 'Rust', 'Scala']
알파벳 역순으로 리스트를 정렬하려면 sort()
메소드 호출 시 reverse
매개변수를 True
로 설정하면 됩니다.
pgm_langs.sort(reverse=True)
print(pgm_langs)
# 출력 결과: ['Scala', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++', 'C#', 'C']
파이썬 리스트 정렬에 대해 더 자세히 알아보세요.
copy()
메소드로 얕은 복사본 만들기
때로는 원본 리스트 자체를 수정하는 대신 원본 리스트의 복사본을 수정하는 것이 유용할 수 있습니다. 리스트 메소드 copy()
는 파이썬 리스트의 얕은 복사본을 반환합니다.
pgm_langs
리스트의 얕은 복사본을 만들고 이름을 pgm_langs_copy
로 지정하겠습니다. 그런 다음 이 복사본의 첫 번째 요소를 ‘Haskell’로 설정하고 출력합니다.
pgm_langs_copy = pgm_langs.copy()
pgm_langs_copy[0]='Haskell'
print(pgm_langs_copy)
# 출력 결과: ['Haskell', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++', 'C#', 'C']
하지만 pgm_langs
리스트는 수정되지 않은 것을 볼 수 있습니다. 따라서 단순 복사본을 만들고 수정해도 원본 리스트에는 영향을 주지 않습니다.
print(pgm_langs)
# 출력 결과: ['Scala', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++', 'C#', 'C']
count()
메소드로 항목 개수 가져오기
때로는 특정 요소가 리스트에 몇 번 나타나는지 알아야 할 때가 있습니다. count()
메소드는 리스트에서 요소가 나타나는 횟수를 반환합니다.
pgm_langs
리스트에서 모든 요소는 정확히 한 번 발생합니다. 따라서 ‘Go’의 개수를 구하려고 하면 1을 얻게 됩니다.
print(pgm_langs.count('Go'))
# 출력 결과: 1
count()
메소드를 사용하는 것은 파이썬 리스트에서 중복 항목을 제거하는 한 가지 방법이 될 수 있습니다.
index()
메소드를 사용하여 항목의 인덱스 가져오기
파이썬 리스트에서 항목의 인덱스를 찾으려면 index()
메소드를 사용할 수 있습니다. 예를 들어 pgm_langs
리스트에서 ‘C#’의 인덱스를 찾고 싶다고 가정해 봅시다. assert
문을 사용하여 인덱스 7의 요소가 실제로 ‘C#’인지 확인할 수 있습니다.
print(pgm_langs.index('C#'))
# 출력 결과: 7
assert pgm_langs[7] == 'C#'
pop()
메소드를 사용하여 인덱스에서 항목 제거하기
이제 파이썬 리스트에서 요소를 제거하는 리스트 메소드들을 살펴보겠습니다. pop()
메소드는 특정 인덱스에서 요소를 제거하고 제거된 요소를 반환하는 데 사용됩니다. 이전 코드 예제에서 ‘C#’이 인덱스 7에 있는 언어임을 확인했습니다.
인덱스가 7인 pgm_langs
리스트에서 pop()
메소드를 호출하면 인덱스 7의 요소인 ‘C#’을 반환하고 리스트에서 제거하는 것을 확인할 수 있습니다.
print(pgm_langs.pop(7))
# 출력 결과: 'C#'
print(pgm_langs)
# 출력 결과: ['Scala', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++', 'C']
따라서 pop()
메소드는 지정된 인덱스에서 요소를 제거하고 반환합니다. 하지만 인덱스 지정은 선택 사항입니다. 인덱스를 지정하지 않으면 pop()
메소드는 파이썬 리스트의 마지막 요소를 제거하고 반환합니다.
print(pgm_langs.pop())
# 출력 결과: 'C'
print(pgm_langs)
# 출력 결과: ['Scala', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++']
remove()
메소드로 항목 제거하기
때로는 제거할 요소는 알지만 해당 인덱스는 모를 수 있습니다. 이 경우 제거할 요소를 전달하여 제거하는 remove()
메소드를 사용할 수 있습니다. 그림과 같이 remove()
메소드를 사용하여 pgm_langs
리스트에서 ‘Java’를 제거해 보겠습니다.
pgm_langs.remove('Java')
print(pgm_langs)
# 출력 결과: ['Scala', 'Rust', 'Python', 'JavaScript', 'Go', 'C++']
clear()
메소드로 모든 항목 제거하기
파이썬 리스트에서 모든 항목을 제거하려면 어떻게 해야 할까요? 리스트를 순회하면서 remove()
메소드를 사용하여 각 요소를 제거할 수 있습니다.
for lang in pgm_langs:
pgm_langs.remove(lang)
하지만 더 좋은 방법이 있을까요? 네, clear()
메소드를 사용하면 됩니다. pgm_langs
리스트에서 clear()
메소드를 호출하면 모든 요소가 제거되고 pgm_langs
는 빈 리스트가 됩니다.
pgm_langs.clear()
print(pgm_langs)
# 출력 결과: []
파이썬 리스트 메소드 요약
다양한 리스트 메소드와 구문을 빠르게 요약해 보겠습니다.
리스트 메소드 | 구문 | 설명 |
insert() |
list1.insert(index, elt) |
list1 의 지정된 index 위치에 elt 를 삽입합니다. |
append() |
list1.append(elt) |
list1 의 끝에 elt 를 추가합니다. |
extend() |
list1.extend(iterable) |
list1 의 끝에 iterable 의 모든 항목을 추가합니다. |
sort() |
list1.sort() |
list1 을 제자리에서 정렬합니다. |
reverse() |
list1.reverse() |
list1 을 제자리에서 반전합니다. |
copy() |
list1.copy() |
list1 의 얕은 복사본을 반환합니다. |
count() |
list1.count(elt) |
list1 에서 elt 가 나타나는 횟수를 반환합니다. |
index() |
list1.index(elt) |
list1 에서 elt 의 인덱스를 반환합니다. |
pop() |
list1.pop(index) |
index 위치의 요소를 제거하고 반환합니다. |
remove() |
list1.remove(elt) |
list1 에서 elt 를 제거합니다. |
clear() |
list1.clear() |
list1 에서 모든 요소를 제거합니다. |
결론
이 튜토리얼이 파이썬에서 가장 일반적으로 사용되는 리스트 메소드를 이해하는 데 도움이 되었기를 바랍니다. 다음 단계로 파이썬 튜플과 파이썬에서 리스트와 튜플의 차이점에 대해 학습해 보세요.
파이썬을 배우는 중이라면, 초보자에게 친숙한 학습 자료 목록을 확인해 보는 것도 좋습니다.