Programa de Python para extraer filas con elementos de diferencia comunes

Dada una Array, extraiga filas con secuencia AP.

Entrada : test_list = [[4, 7, 10], [8, 10, 12], [10, 11, 13], [6, 8, 10]] 
Salida : [[4, 7, 10], [8 , 10, 12], [6, 8, 10]] 
Explicación : 3, 4 y 2 son diferencias comunes en AP.

Entrada : test_list = [[4, 7, 10], [8, 10, 13], [10, 11, 13], [6, 8, 10]] 
Salida : [[4, 7, 10], [6 , 8, 10]] 
Explicación : 3 y 2 son diferencias comunes en AP. 

Método #1: Usar bucle 

En esto, verificamos todos los elementos que tienen una diferencia común usando un bucle, si algún elemento no está sincronizado, entonces la fila se marca y no se agrega al resultado.

Python3

# Python3 code to demonstrate working of
# Extract rows with common difference elements
# Using loop
 
# initializing list
test_list = [[4, 7, 10],
             [8, 10, 12],
             [10, 11, 13],
             [6, 8, 10]]
 
# printing original list
print("The original list is : " + str(test_list))
         
res = []
for row in test_list:
    flag = True
    for idx in range(0, len(row) - 1):
         
        # check for common difference
        if row[idx + 1] - row[idx] != row[1] - row[0]:
            flag = False
            break
    if flag :
        res.append(row)
 
# printing result
print("Filtered Matrix : " + str(res))

Producción:

La lista original es: [[4, 7, 10], [8, 10, 12], [10, 11, 13], [6, 8, 10]] 
Array filtrada: [[4, 7, 10], [8, 10, 12], [6, 8, 10]] 
 

Método #2: Usando all() + comprensión de lista

En esto, verificamos que todos los valores tengan una diferencia común usando all(), la comprensión de lista se usa para realizar una iteración de filas.

Python3

# Python3 code to demonstrate working of
# all() + list comprehension
# Using list comprehension + all()
 
# initializing list
test_list = [[4, 7, 10],
             [8, 10, 12],
             [10, 11, 13],
             [6, 8, 10]]
 
# printing original list
print("The original list is : " + str(test_list))
 
# checking for all values to have common difference        
res = [row for row in test_list
       if all(row[idx + 1] - row[idx] == row[1] - row[0]
              for idx in range(0, len(row) - 1))]
 
# printing result
print("Filtered Matrix : " + str(res))

Producción:

La lista original es: [[4, 7, 10], [8, 10, 12], [10, 11, 13], [6, 8, 10]] 
Array filtrada: [[4, 7, 10], [8, 10, 12], [6, 8, 10]] 
 

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 *