들어가며
파이썬의 리스트는 데이터를 저장하고 조작하는데 매우 유용하게 사용할 수 있는 자료구조입니다. 리스트는 순서가 있는 변경 가능한 데이터 구조로, 다양한 테이터들을 저장할 수 있는데요. 이 글에서는 리스트의 기본 사용법, 어떻게 초기화 하고 사용 및 수정할 수 있는지에 대해 다뤄보도록 하겠습니다.
파이썬 리스트 생성 및 초기화
리스트는 대괄호([]를 사용하여 생성할 수 있습니다. 내부 요소 구분은 콤마(,)를 이용해 구분해 줍니다.
# 빈 리스트 생성
empty_list = []
# 여러 타입의 요소를 포함한 리스트 생성
mixed_list = [1, "apple", 3.14, True]
# 정수 리스트
numbers = [1, 2, 3, 4, 5]
다른 대부분의 언어와 마찬가지로 리스트 생성과 동시에 초기화 할 수도 있고, 리스트 선언 후 수정을 할 수도 있습니다. 수정은 아래 섹션에서 이어서 살펴볼게요.
리스트 요소 접근, 수정하기
리스트 요소에는 인덱스를 사용하여 접근할 수 있습니다. 인덱스는 0부터 시작하며 음수 인덱스를 사용하면 리스트 뒤에서부터 요소 접근이 가능합니다.
fruits = ["apple", "banana", "cherry"]
# 첫 번째 요소 접근
print(fruits[0]) # apple
# 마지막 요소 접근
print(fruits[-1]) # cherry
# 요소 수정
fruits[1] = "blueberry"
print(fruits) # ['apple', 'blueberry', 'cherry']
리스트 슬라이싱
위 내용이 기본기였다면 이제부터 리스트 활용도가 높아지는 방법들이 될 듯 합니다.
리스트의 부분 집합을 추출하기 위해 슬라이싱을 사용할 수 있습니다. 슬라이싱 구문은 start:stop:step 형식에 맞춰 작성하며, 다양하게 활용할 수 있습니다. 아래 예제를 보면 금방 이해하실 수 있을거에요.
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 인덱스 2에서 5까지 슬라이싱
subset = numbers[2:6]
print(subset) # [2, 3, 4, 5]
# 인덱스 0에서 8까지 2씩 증가하면서 슬라이싱
subset = numbers[0:9:2]
print(subset) # [0, 2, 4, 6, 8]
# 리스트 전체를 뒤집기
reversed_numbers = numbers[::-1]
print(reversed_numbers) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
리스트의 주요 메서드와 함수
리스트를 좀 더 쉽고 유용하게 활용할 수 있는 기본 함수들은 아래와 같습니다. 여기까지 알아두시면 리스트는 정복했다고 봐도 될 것 같습니다.
append()
리스트의 끝에 요소를 추가합니다.
numbers = [1, 2, 3]
numbers.append(4)
print(numbers) # [1, 2, 3, 4]
extend()
다른 리스트의 요소들을 현재 리스트에 추가합니다.
numbers = [1, 2, 3]
more_numbers = [4, 5, 6]
numbers.extend(more_numbers)
print(numbers) # [1, 2, 3, 4, 5, 6]
insert()
지정된 인덱스에 요소를 추가합니다.
numbers = [1, 2, 4]
numbers.insert(2, 3)
print(numbers) # [1, 2, 3, 4]
remove()
리스트에서 지정된 값을 제거합니다. 앞에서부터 순서대로 탐색하기에 값이 여러 개 있을 경우 첫 번째 값을 제거합니다.
numbers = [1, 2, 3, 4, 3]
numbers.remove(3)
print(numbers) # [1, 2, 4, 3]
pop()
지정된 인덱스의 요소를 제거하고 반환합니다. 인덱스를 지정하지 않으면 마지막 요소를 제거하고 반환합니다. 값을 사용하면서 제거할 때 유용하게 활용할 수 있습니다.
numbers = [1, 2, 3, 4]
last_element = numbers.pop()
print(last_element) # 4
print(numbers) # [1, 2, 3]
index()
지정된 값의 첫 번째 인덱스를 반환합니다.
fruits = ["apple", "banana", "cherry"]
index_of_banana = fruits.index("banana")
print(index_of_banana) # 1
count()
리스트에서 지정된 값의 개수를 반환합니다.
numbers = [1, 2, 3, 1, 1, 4]
count_of_ones = numbers.count(1)
print(count_of_ones) # 3
sort()
리스트를 정렬합니다. 기본적으로 오름차순으로 정렬되며, reverse=True를 사용하면 내림차순으로 정렬됩니다. 아래 reverse()를 쓰는게 더 나을수도 있습니다.
numbers = [3, 1, 4, 1, 5, 9]
numbers.sort()
print(numbers) # [1, 1, 3, 4, 5, 9]
numbers.sort(reverse=True)
print(numbers) # [9, 5, 4, 3, 1, 1]
reverse()
리스트의 요소 순서를 반대로 뒤집습니다.
numbers = [1, 2, 3, 4, 5]
numbers.reverse()
print(numbers) # [5, 4, 3, 2, 1]
copy()
리스트의 얕은 복사본을 반환합니다.
numbers = [1, 2, 3]
numbers_copy = numbers.copy()
print(numbers_copy) # [1, 2, 3]
clear()
리스트의 모든 요소를 제거합니다.
numbers = [1, 2, 3]
numbers.clear()
print(numbers) # []
리스트 컴프리헨션
리스트 컴프리헨션은 리스트를 간결하게 생성할 수 있는 방법입니다. 기존 리스트를 기반으로 새로운 리스트를 생성하거나, 조건문을 이용해 리스트 요소를 생성하기도 하죠. 기본기를 응용하기 나름이라 잘 배워둔다면 매우 간결한 리스트 생성에 도움이 된답니다. 심지어 코드도 간결해질 수 있죠.
# 0부터 9까지의 제곱수를 포함하는 리스트 생성
squares = [x**2 for x in range(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 짝수만 포함하는 리스트 생성
evens = [x for x in range(10) if x % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]
리스트와 비슷한 유용한 데이터 구조들이 궁금하지 않으세요?
마무리
파이썬 리스트는 다양한 데이터를 저장하고 조작하는 데 매우 유용한 도구입니다. 리스트의 기본 사용법부터 다양한 메서드와 함수를 활용한 리스트 조작 방법까지 다루어 보았는데요. 이러한 기능을 잘 활용하면 데이터 처리와 분석 작업이 훨씬 수월해질 것입니다. 파이썬 리스트의 다양한 기능을 익히고 활용하여 보다 효율적인 프로그래밍을 해보세요.