RoBoLoG

[Python] 파이썬에서 List 사용 예시 본문

Study/Python

[Python] 파이썬에서 List 사용 예시

SKJun 2024. 1. 17. 17:36

Python에서 List 이해하기: 기본부터 고급 기술까지

 

Python은 데이터를 다루는 데 강력한 언어이며, 그 중심에는 다양한 데이터 구조가 있습니다. 이 글에서는 Python의 가장 기본적인 데이터 구조 중 하나인 List에 대해 자세히 알아보겠습니다.

 


List란 무엇인가?

 

List는 Python에서 사용되는 가장 유연한 데이터 구조 중 하나입니다. 여러 데이터 항목을 순차적으로 저장할 수 있는 컨테이너로, 이러한 항목들은 서로 다른 데이터 타입일 수 있습니다. List는 대괄호 []를 사용하여 생성되며, 항목들은 쉼표로 구분됩니다.

 

my_list = [1, "Hello", 3.14]
# [1, "Hello", 3.14]

 

 


 

List의 주요 메소드들

 

Python의 List는 다양한 내장 메소드를 제공합니다. 이러한 메소드를 통해 List에 데이터를 추가, 삭제, 조작할 수 있습니다.

 

1. 요소 추가

  • append(): List의 끝에 항목을 추가. Python List에 새로운 요소를 추가하는 가장 기본적인 방법입니다. 이 메소드는 호출되는 List의 끝에 인자로 전달된 값을 추가합니다. append()는 단일 요소를 추가할 때 사용되며, 이 때 추가되는 요소는 List의 마지막 요소가 됩니다. 이 메소드는 List의 크기를 하나 증가시킵니다.
my_list.append("Python")
# [1, "Hello", 3.14, "Python"]

 

  • insert(): 지정된 위치에 항목을 삽입. List의 특정 위치에 요소를 삽입할 때 사용됩니다. 이 메소드는 두 개의 인자를 받습니다: 삽입할 위치를 나타내는 인덱스와 삽입할 요소입니다. insert()를 사용하면 지정된 인덱스에 요소가 삽입되고, 기존에 있던 요소들은 오른쪽으로 이동합니다. 인덱스는 0부터 시작하며, List의 길이를 초과하는 인덱스가 지정된 경우 요소는 List의 끝에 추가됩니다.
my_list.insert(1, "World")
# [1, "World", "Hello", 3.14, "Python"]

 

  • extend(): 다른 List의 모든 항목을 현재 List에 추가. 한 List의 모든 요소를 다른 List에 추가할 때 사용됩니다. 이 메소드는 인자로 다른 List(또는 반복 가능한 다른 컬렉션)을 받고, 해당 컬렉션의 모든 요소를 현재 List의 끝에 순차적으로 추가합니다. extend()는 주로 두 List를 결합할 때 사용되며, append()와 달리 여러 요소를 한 번에 추가할 수 있습니다.
another_list = [2, 4, 6]
my_list.extend(another_list)
# [1, "World", "Hello", 3.14, "Python", 2, 4, 6]

 

2. 요소 삭제

  • remove(): 지정된 값과 일치하는 첫 번째 항목 삭제. List에서 특정 값을 찾아 그 값을 가진 첫 번째 요소를 삭제합니다. 이 메소드는 삭제하려는 값을 인자로 받으며, 해당 값이 List 내에 존재하지 않으면 ValueError가 발생합니다. remove()는 List에서 중복된 값이 있을 때 첫 번째로 나타나는 요소만을 삭제하고, 나머지 중복된 요소들은 그대로 유지됩니다.
my_list.remove("Hello")
# [1, "World", 3.14, "Python", 2, 4, 6]

 

  • pop(): 지정된 인덱스의 항목을 삭제하고, 그 값을 반환. List에서 특정 인덱스의 요소를 삭제하고 그 값을 반환합니다. 인덱스를 인자로 전달하지 않으면, List의 마지막 요소를 삭제하고 반환합니다. pop()은 삭제된 요소를 반환하므로, 해당 요소를 변수에 저장하거나 다른 용도로 사용할 수 있습니다. 인덱스가 List의 범위를 벗어나면 IndexError가 발생합니다.
item = my_list.pop()
# item = 6, my_list = [1, "World", 3.14, "Python", 2, 4]

 

  • clear(): List의 모든 항목을 삭제.  List 내의 모든 요소를 삭제하고, 빈 List를 남깁니다. 이 메소드는 인자를 받지 않으며, 호출된 List를 완전히 비웁니다. List의 크기를 0으로 만들고, 기존에 저장된 모든 데이터를 제거하는 데 사용됩니다.
my_list.clear()
# []

 

3. 기타 메소드

  • index(): 지정된 값과 일치하는 첫 번째 항목의 인덱스 반환. List에서 특정 값과 일치하는 첫 번째 항목의 인덱스를 반환합니다. 이 메소드는 찾고자 하는 값을 인자로 받으며, 해당 값이 List 내에 존재하지 않으면 ValueError가 발생합니다. index() 메소드는 특정 값이 List 내에서 처음으로 나타나는 위치를 찾을 때 유용합니다.
numbers = [1, 2, 3, 4, 5, 3, 7]
index_of_three = numbers.index(3)
# index_of_three = 2

 

  • count(): List에서 지정된 값의 출현 횟수를 반환. List 내에서 지정된 값이 나타나는 횟수를 반환합니다. 이 메소드는 세고자 하는 값을 인자로 받으며, 해당 값이 List 내에 존재하는 횟수를 정수로 반환합니다. count() 메소드는 특정 값이 List 내에서 얼마나 자주 발생하는지 알고 싶을 때 사용됩니다.
count_of_three = numbers.count(3)
# count_of_three = 2

 

  • sort(): List의 항목들을 정렬. List의 요소들을 오름차순 또는 내림차순으로 정렬합니다. 이 메소드는 기본적으로 오름차순으로 정렬하며, reverse=True 인자를 추가하여 내림차순으로 정렬할 수 있습니다. sort()는 List 내부에서 직접 정렬을 수행하므로, 원본 List가 변경됩니다.
numbers.sort()
# numbers = [1, 2, 3, 3, 4, 5, 7]

numbers.sort(reverse=True)
# numbers = [7, 5, 4, 3, 3, 2, 1]

 

  • reverse(): List의 항목들의 순서를 반대로 뒤집기. List의 요소들의 순서를 반대로 뒤집습니다. 이 메소드는 인자를 받지 않으며, 호출된 List의 요소들의 순서를 역순으로 재배열합니다. reverse()는 주로 List의 요소들을 역순으로 나열할 때 사용됩니다.
letters = ['a', 'b', 'c', 'd']
letters.reverse()
# letters = ['d', 'c', 'b', 'a']

 


List 슬라이싱 및 조작

1. List 슬라이싱

List 슬라이싱은 Python에서 List의 일부분을 선택하고 추출하는 강력한 방법입니다. 슬라이싱을 통해 기존 List에서 새로운 부분 List를 생성할 수 있으며, 이는 원본 List에 영향을 주지 않습니다. 슬라이싱은 대괄호 [] 내에 시작 인덱스:종료 인덱스 형태로 지정하여 사용합니다. 시작 인덱스는 포함되고, 종료 인덱스는 포함되지 않습니다. 인덱스는 0부터 시작합니다.

 

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
sliced = numbers[2:5]
# sliced = [3, 4, 5]

 

 

여기서 numbers[2:5]numbers List의 세 번째 요소(인덱스 2)부터 다섯 번째 요소(인덱스 4)까지를 선택합니다.

 

 

2. List 결합 및 반복

List는 + 연산자를 사용하여 쉽게 결합할 수 있습니다. 이는 두 List를 연결하여 새로운 List를 생성합니다. 이 연산은 원본 List들을 변경하지 않고, 두 List의 요소들을 포함하는 새로운 List를 반환합니다.

 

combined = numbers + [10, 11, 12]
# combined = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

 

* 연산자는 List를 반복하여 확장합니다. 이 연산은 주어진 횟수만큼 List의 요소를 반복하여 새로운 List를 생성합니다. 이 방법은 같은 요소의 반복이 필요할 때 유용합니다.

 

repeated = [1, 2, 3] * 3
# repeated = [1, 2, 3, 1, 2, 3, 1, 2, 3]

 

이러한 슬라이싱 및 조작 기법은 Python에서 List를 다룰 때 큰 유연성을 제공합니다. 복잡한 데이터 구조를 간단하게 조작하거나, 새로운 List를 생성하거나, 데이터를 재구성하는 데에 매우 효과적입니다.

 


결론

List는 Python에서 데이터를 다루는 데 있어 필수적인 도구입니다. 그 유연성과 다양한 기능 덕분에, 다양한 프로그래밍 상황에서 활용될 수 있습니다. 이 글을 통해 Python의 List에 대해 좀 더 잘 이해하고 활용할 수 있기를 바랍니다.

728x90
반응형