리스트에서 특정 인덱스에 위치한 요소들을 제거해야 하는 경우, enumerate 함수와 not in 연산자, 간단한 반복문, 그리고 append 메서드를 함께 사용하면 손쉽게 해결할 수 있습니다.
예제 코드
아래는 이를 구현한 예제입니다.
my_list = [91, 75, 15, 45, 69, 78, 23, 71, 36, 72]
print("The list is : " )
print(my_list)
print("The list after sorting is : " )
my_list.sort()
print(my_list)
index_list = [2, 4, 5, 7]
print("The index values stored in the list are :")
print(index_list)
my_result = []
for index, element in enumerate(my_list):
if index not in index_list:
my_result.append(element)
print("The resultant list is : ")
print(my_result)
print("The list after sorting is : " )
my_result.sort()
print(my_result)실행 결과
The list is : [91, 75, 15, 45, 69, 78, 23, 71, 36, 72] The list after sorting is : [15, 23, 36, 45, 69, 71, 72, 75, 78, 91] The index values stored in the list are : [2, 4, 5, 7] The resultant list is : [15, 23, 45, 72, 78, 91] The list after sorting is : [15, 23, 45, 72, 78, 91]
동작 원리 설명
먼저 하나의 리스트를 정의하고 콘솔에 출력합니다.
리스트를 오름차순으로 정렬한 뒤 다시 출력합니다.
제거할 요소들의 인덱스 값을 별도의 리스트에 저장합니다.
저장된 인덱스 리스트 역시 콘솔에 출력합니다.
결과를 담을 빈 리스트를 하나 생성합니다.
enumerate함수를 사용해 원본 리스트를 순회하면서 각 요소의 인덱스와 값을 함께 가져옵니다.if조건문과not in연산자를 통해 현재 인덱스가 인덱스 리스트에 포함되어 있는지 검사합니다.포함되어 있지 않다면, 해당 요소를 결과 리스트에 추가(
append)합니다.인덱스 리스트에 포함된 위치의 요소들은 자연스럽게 건너뛰어지므로 최종 결과에서 제거됩니다.
완성된 결과 리스트를 출력하고, 마지막으로 한 번 더 정렬하여 콘솔에 표시합니다.
참고: 리스트 컴프리헨션을 활용한 간결한 방법
위 코드는 리스트 컴프리헨션(list comprehension)을 사용하면 더욱 간결하게 표현할 수 있습니다.
my_result = [element for index, element in enumerate(my_list) if index not in index_list]
이 방식은 동일한 로직을 한 줄로 처리하며, 가독성과 성능 면에서도 유리합니다. 또한 인덱스 리스트가 매우 길다면 set으로 변환하여 조회 속도를 높이는 것도 좋은 최적화 방법입니다.