Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 범위의 요소 삭제

<시간/>

파이썬에서 단일 요소를 삭제하는 것은 요소의 인덱스와 del 함수를 사용하여 간단합니다. 그러나 인덱스 그룹에 대한 요소를 삭제해야 하는 시나리오가 있을 수 있습니다. 이 문서에서는 인덱스 목록에 지정된 목록의 요소만 삭제하는 방법을 살펴봅니다.

정렬 및 del 사용

이 접근 방식에서는 삭제가 발생해야 하는 인덱스 값을 포함하는 목록을 만듭니다. 목록 요소의 원래 순서를 유지하기 위해 정렬하고 반전합니다. 마지막으로 특정 인덱스 포인트에 대해 원래 주어진 목록에 del 함수를 적용합니다.

Alist = [11,6, 8, 3, 2]

# The indices list
idx_list = [1, 3, 0]

# printing the original list
print("Given list is : ", Alist)

# printing the indices list
print("The indices list is : ", idx_list)

# Use del and sorted()
for i in sorted(idx_list, reverse=True):
del Alist[i]

# Print result
print("List after deleted elements : " ,Alist)

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

Given list is : [11, 6, 8, 3, 2]
The indices list is : [1, 3, 0]
List after deleted elements : [8, 2]

idx_list는 정렬 후 역순으로 [0,1,3]이 됩니다. 따라서 이 위치의 요소만 삭제됩니다.

enumerate를 사용하고 in은 사용하지 않음

for 루프 내에서 enumerate 및 not in 절을 사용하여 위의 프로그램에 접근할 수도 있습니다. 결과는 위와 같습니다.

Alist = [11,6, 8, 3, 2]

# The indices list
idx_list = [1, 3, 0]

# printing the original list
print("Given list is : ", Alist)

# printing the indices list
print("The indices list is : ", idx_list)

# Use slicing and not in
Alist[:] = [ j for i, j in enumerate(Alist)
if i not in idx_list ]

# Print result
print("List after deleted elements : " ,Alist)

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

Given list is : [11, 6, 8, 3, 2]
The indices list is : [1, 3, 0]
List after deleted elements : [8, 2]