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