파이썬 list()
함수는 매우 강력한 데이터 구조 중 하나입니다. 이 글에서는 list()
의 기본 사용법과 함께 효율적인 활용 방법을 소개합니다. 프로그래밍 초보자와 숙련자 모두가 알아야 할 필수 개념들을 쉽게 풀어 설명할 테니, 끝까지 읽어보세요.
목차
list()란 무엇인가?
list()
는 파이썬에서 리스트 자료형을 만드는 함수입니다. 리스트는 여러 값을 하나의 변수에 저장할 수 있는 가변적인 시퀀스형 자료 구조입니다. 여기서 ‘가변적’이라는 뜻은 리스트에 값을 추가하거나 제거할 수 있다는 뜻입니다. 리스트는 배열과 비슷하지만, 파이썬의 리스트는 다양한 타입의 데이터를 저장할 수 있다는 특징이 있습니다. 예를 들어, 하나의 리스트에 정수, 문자열, 실수 등을 함께 저장할 수 있습니다.
list() 기본 사용법
리스트는 다음과 같은 두 가지 방식으로 생성할 수 있습니다.
- 대괄호를 사용하는 방식:
my_list = [1, 2, 3, 4]
list()
함수를 사용하는 방식:my_list = list([1, 2, 3, 4])
두 방식 모두 동일하게 리스트를 생성합니다. list()
함수는 빈 리스트를 생성하거나 다른 반복 가능한 객체(iterable)를 리스트로 변환하는 데도 사용됩니다.
# 빈 리스트 생성
empty_list = []
print(empty_list)
empty_list = list()
print(empty_list)
# 문자열을 리스트로 변환
str_list = list("hello")
print(str_list)
아래 그림에서는 빈 리스트를 만든 결과와 문자열을 리스트로 변환한 경우를 살펴볼 수 있습니다.
리스트의 주요 기능
요소 추가하기: append()
리스트에 새로운 요소를 추가할 때는 append()
메서드를 사용합니다. 이 메서드는 리스트의 끝에 요소를 추가합니다.
my_list = [1, 2, 3]
my_list.append(4)
print(my_list)
아래 그림에서 my_list의 제일 마지막에 값 4가 추가된 것을 확인할 수 있습니다.
여러 요소 추가하기: extend()
extend()
메서드를 사용하면 다른 리스트나 반복 가능한 객체의 요소들을 한꺼번에 추가할 수 있습니다.
my_list.extend([5, 6])
print(my_list)
아래 그림에서 리스트 [5, 6]의 값이 my_list의 마지막에 추가된 것을 확인할 수 있습니다.
요소 삽입하기: insert()
특정 위치에 요소를 삽입하려면 insert()
메서드를 사용합니다. 인덱스를 지정하여 원하는 위치에 값을 삽입할 수 있습니다.
my_list = [1, 2, 4]
my_list.insert(2, 3) # 2번 인덱스에 숫자 3 삽입
print(my_list)
아래 그림에서는 기존에 값 4를 가지고 있던 인덱스 2번 자리에 숫자 3을 삽입하고 값 4는 인덱스 3으로 밀려난 것을 확인할 수 있습니다.
요소 제거하기: remove(), pop(), del
리스트에서 요소를 제거하는 방법은 여러 가지가 있습니다. list의 메서드 remove()와 pop()을 사용하는 방법이 있으며, 파이썬의 명령어 del을 사용하는 방법이 있습니다.
remove()
: 리스트에서 처음으로 발견된 해당 요소를 제거합니다.pop()
: 특정 인덱스에 있는 요소를 제거하고 그 값을 반환합니다. 인덱스를 지정하지 않으면 마지막 요소를 제거합니다.- del: del 명령어를 사용해서 리스트의 특정 인덱스의 요소를 제거할 수 있습니다.
my_list = [1, 2, 3, 4, 5, 2, 3, 4]
my_list.remove(3)
print(my_list)
popped_value = my_list.pop(1)
print(my_list)
print(popped_value)
popped_value = my_list.pop()
print(my_list)
print(popped_value)
del my_list[0]
print(my_list)
1~3 라인은 remove() 메서드를 사용해서 최초로 발견한 3을 삭제합니다. 5~7라인은 pop() 메서드를 사용해서 1번 인덱스의 값을 제거합니다. 8~9 라인은 pop() 메서드를 사용해서 가장 마지막 요소를 제거합니다. 12~13 라인은 0번 인덱스의 값을 제거합니다. 아래는 위의 코드를 실행한 결과입니다.
리스트 정렬하기: sort(), sorted()
리스트는 sort()
메서드를 사용하여 오름차순으로 정렬할 수 있습니다. 내림차순으로 정렬하고 싶다면 reverse=True
옵션을 추가합니다.
my_list = [3, 1, 5, 4, 2]
my_list.sort()
print(my_list)
my_list.sort(reverse=True)
print(my_list)
아래 그림을 보면 sort() 메서드를 실행하여 오름차순 정렬된 결과와 sort()메서드에 reverse=True를 적용하여 내림차순 정렬된 결과를 각각 확인할 수 있습니다.
sorted()
함수는 리스트를 정렬된 새로운 리스트로 반환하는 반면, sort()
메서드는 기존 리스트를 변경합니다.
my_list = [3, 1, 5, 4, 2]
sorted_list = sorted(my_list)
print(my_list)
print(sorted_list)
아래 그림에서는 my_list는 변화 없이 그대로이며, sorted_list에만 정렬된 값이 저장된 것을 확인할 수 있습니다.
리스트 뒤집기: reverse()
reverse()
메서드는 리스트의 순서를 뒤집습니다. 주의할 점은 이 메서드는 정렬과는 관련이 없고, 단순히 리스트의 현재 순서를 역순으로 변경한다는 것입니다.
my_list = [1, 3, 5, 2, 4]
my_list.reverse()
print(my_list)
아래 그림을 보면 1번 라인의 리스트가 정렬과 무관하게 순서만 뒤집힌 것을 확인할 수 있습니다.
리스트 길이 구하기: len()
리스트의 길이, 즉 요소의 개수를 알고 싶다면 len()
함수를 사용하면 됩니다.
my_list = [1, 2, 3, 4, 3, 2, 5]
print(len(my_list))
다음 그림에서는 리스트의 길이가 7인 것을 확인할 수 있습니다.
리스트 포함 여부 확인: in 연산자
리스트에 특정 값이 포함되어 있는지 확인하려면 in
연산자를 사용합니다.
my_list = [1, 2, 3, 4]
print(3 in my_list)
print(5 in my_list)
아래의 그림 보면 3은 my_list의 요소이므로 True가 반환되며, 5는 my_list의 요소가 아니므로 False가 반환되는 것을 확인할 수 있습니다.
리스트 복사
리스트를 복사할 때는 단순히 대입 연산자를 사용하면 안 됩니다. 대입 연산자는 같은 객체를 참조하게 만들기 때문입니다. 리스트를 복사하려면 얕은 복사가 가능한 copy()
메서드나 list()
함수를 사용하거나, 깊은 복사가 가능한 deepcopy()를 사용해야 합니다. 아래에서는 얕은 복사를 이용한 방법을 살펴보도록 하겠습니다.
original = [1, 2, 3]
copy_list = original.copy()
print(copy_list)
아래 그림은 얕은 복사를 이용해서 리스트를 복사한 예시입니다.
주의사항
- 리스트는 가변적인 자료형이므로, 원본 리스트를 수정하는 메서드들은 리스트 자체를 변경합니다. 원본 데이터를 유지하려면 리스트를 복사하여 작업하는 것이 좋습니다.
- 리스트는 인덱스를 0부터 시작합니다. 이 점을 염두에 두고 인덱스 작업을 해야 합니다.
정리
파이썬의 list()
함수는 데이터를 저장하고 관리하는 데 매우 유용한 도구입니다. append()
, insert()
, remove()
등 여러 메서드를 통해 리스트를 유연하게 조작할 수 있으며, sort()
, reverse()
등의 메서드를 사용하면 리스트의 순서도 쉽게 변경할 수 있습니다. 리스트는 파이썬에서 가장 많이 쓰이는 자료형 중 하나이므로, 이 글에서 소개한 기능들을 숙지하면 코드 작성과 문제 해결 능력이 크게 향상될 것입니다.