Programa de Python para encontrar la diferencia de fila sucesiva en Matrix

Dada una Array, la tarea es escribir un programa en Python para realizar diferencias con la fila anterior sobre la base de los elementos presentes.

Entrada: lista_prueba = [[5, 6, 3, 1], [7, 5, 3, 1], [3, 2], [7, 3, 3, 2], [2, 3], [9, 8, 1]]

Salida: [[], [7], [2], [7], [], [8, 9, 1]]

Explicación: al comparar la 1.ª y la 2.ª fila, solo existe 7 en la 2.ª fila y no en la 1.ª, por lo que se genera [7].

Entrada: lista_prueba = [[5, 6], [7, 5, 3, 1], [3, 4], [7], [2, 9], [9, 8, 1]]

Salida: [[], [1, 3, 7], [4], [7], [9, 2], [8, 1]]

Explicación: al comparar la segunda y la tercera lista, solo 4 está presente en la tercera lista y no en la segunda, por lo tanto, la salida.

Ejemplo: Usar set.difference() + loop

En esto, se mantiene el conjunto anterior, que lleva la pista del conjunto anterior para obtener la diferencia. Esto elimina todos los elementos de la lista actual que ya están presentes en la lista anterior.

Python3

# Python3 code to demonstrate working of
# Successive row difference in Matrix
# Using set.difference + loop
 
# initializing list
test_list = [[5, 6, 3, 1], [7, 5, 3, 1],
             [3, 2], [7, 3, 3, 2],
             [2, 3], [9, 8, 1]]
              
# printing original list
print("The original list is : " + str(test_list))
 
res = []
prev = set(test_list[0])
for ele in test_list:
     
    # appending difference set diff with previous
    # element
    res.append(list(set(ele).difference(prev)))
     
    # updating prev. for comparison
    prev = set(ele)
 
# printing result
print("Successive Row difference : " + str(res))

Producción:

La lista original es: [[5, 6, 3, 1], [7, 5, 3, 1], [3, 2], [7, 3, 3, 2], [2, 3], [9 , 8, 1]]

Diferencia de fila sucesiva: [[], [7], [2], [7], [], [8, 9, 1]]

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 *