Python – Eliminar filas posicionales

Dada una Matrix, la tarea es escribir un programa Python para eliminar filas que tienen ciertas posiciones.

Ejemplo:

Input: test_list = [[3, 5, 2], [1, 8, 9], 
                [5, 3, 1], [0, 1, 6], 
            [9, 4, 1], [1, 2, 10], 
            [0, 1, 2]]; idx_lis = [1, 2, 5]
Output: [[3, 5, 2], [0, 1, 6], [9, 4, 1], [0, 1, 2]]
Explanation: 1st, 2nd and 5th rows are removed.

Input: test_list = [[3, 5, 2], [1, 8, 9], 
             [5, 3, 1], [0, 1, 6], 
             [9, 4, 1], [1, 2, 10], 
             [0, 1, 2]]; idx_lis = [1, 3, 5]
Output: [[3, 5, 2], [5, 3, 1], [9, 4, 1], [0, 1, 2]]
Explanation: 1st, 3rd and 5th rows are removed.

Método n. ° 1: usar loop + pop() + iteración hacia atrás

En esto, la eliminación se maneja usando pop(), y es necesaria una iteración hacia atrás para asegurarse de que, debido a la reorganización en la eliminación, no se elimine la fila posicional incorrecta.

Python3

# Python3 code to demonstrate working of
# Remove positional rows
# Using loop + pop() + back iteration
  
# initializing list
test_list = [[3, 5, 2], [1, 8, 9], [5, 3, 1], 
             [0, 1, 6], [9, 4, 1], [1, 2, 10], 
             [0, 1, 2]]
  
# printing original list
print("The original list is: " + str(test_list))
  
# initializing indices
idx_lis = [1, 2, 5]
  
# back iteration
for idx in idx_lis[::-1]:
  
    # pop() used for removal
    test_list.pop(idx)
  
# printing result
print("Matrix after removal: " + str(test_list))

Producción:

La lista original es: [[3, 5, 2], [1, 8, 9], [5, 3, 1], [0, 1, 6], [9, 4, 1], [1, 2 , 10], [0, 1, 2]]

Array después de la eliminación: [[3, 5, 2], [0, 1, 6], [9, 4, 1], [0, 1, 2]]

Método #2: Usar enumerate() + comprensión de lista

En esto, en lugar de eliminar filas por índice, realizamos la tarea de agregar solo filas que no forman parte de la eliminación de la lista de índice.

Python3

# Python3 code to demonstrate working of
# Remove positional rows
# Using enumerate() + list comprehension
  
# initializing list
test_list = [[3, 5, 2], [1, 8, 9], [5, 3, 1], 
             [0, 1, 6], [9, 4, 1], [1, 2, 10], 
             [0, 1, 2]]
  
# printing original list
print("The original list is: " + str(test_list))
  
# initializing indices
idx_lis = [1, 2, 5]
  
# using enumerate() to get index and value of each row
res = [sub[1] for sub in enumerate(test_list) if sub[0] not in idx_lis]
  
# printing result
print("Matrix after removal: " + str(res))

Producción:

La lista original es: [[3, 5, 2], [1, 8, 9], [5, 3, 1], [0, 1, 6], [9, 4, 1], [1, 2 , 10], [0, 1, 2]]

Array después de la eliminación: [[3, 5, 2], [0, 1, 6], [9, 4, 1], [0, 1, 2]]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *