Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 여러 특정 인덱스 범위 사이의 요소 추출하기

여러 개의 특정 인덱스 범위 사이에 있는 요소들을 추출해야 할 때는 extend 메서드와 간단한 반복문, 그리고 인덱싱을 활용하면 됩니다. 이 방법은 리스트 슬라이싱의 기본 원리를 응용한 것으로, 코드도 직관적이라 초보자도 쉽게 따라 할 수 있습니다.

예제 코드

아래는 실제 동작을 보여주는 예제입니다.

my_list = [13, 21, 81, 10, 13, 17, 22, 18, 11, 90, 0]

print("The list is : ")
print(my_list)
print("The list after sorting is : " )
my_list.sort()
print(my_list)

range_list = [(2, 4), (7, 8), (1, 2), (2,7)]

my_result = []
for element in range_list:
   my_result.extend(my_list[element[0] : element[1] + 1])

print("The resultant list is : ")
print(my_result)

print("The result after sorting is : " )
my_result.sort()
print(my_result)

출력 결과

The list is :
[13, 21, 81, 10, 13, 17, 22, 18, 11, 90, 0]
The list after sorting is :
[0, 10, 11, 13, 13, 17, 18, 21, 22, 81, 90]
The resultant list is :
[11, 13, 13, 21, 22, 10, 11, 11, 13, 13, 17, 18, 21]
The result after sorting is :
[10, 11, 11, 11, 13, 13, 13, 13, 17, 18, 21, 21, 22]

코드 설명

  • 먼저 하나의 리스트를 정의하고 콘솔에 출력합니다.

  • sort() 메서드를 사용해 리스트를 오름차순으로 정렬한 뒤 다시 출력합니다.

  • 튜플로 구성된 또 다른 리스트를 정의하는데, 각 튜플은 추출할 인덱스 범위(시작 인덱스, 끝 인덱스)를 나타냅니다.

  • 결과를 담을 빈 리스트를 하나 생성합니다.

  • 범위 리스트를 순회하면서 리스트 인덱싱과 슬라이싱을 통해 해당 범위의 요소들을 추출합니다. 이때 끝 인덱스에 1을 더해 마지막 요소까지 포함되도록 합니다(element[1] + 1). 추출된 요소들은 extend 메서드로 결과 리스트에 추가됩니다.

  • 추출된 결과 리스트를 콘솔에 출력합니다.

  • 마지막으로 결과 리스트를 정렬하여 다시 한번 출력합니다.

핵심 포인트

여기서 주목할 점은 파이썬의 슬라이싱이 끝 인덱스를 포함하지 않는다는 것입니다. 따라서 범위의 마지막 요소까지 모두 가져오려면 + 1을 해주어야 합니다. 또한 append 대신 extend를 사용하면 슬라이싱된 여러 요소가 개별적으로 결과 리스트에 추가되므로, 중첩 리스트 없이 평탄한(flat) 리스트를 얻을 수 있습니다.