Python: strings de caracteres consecutivos equidistantes

Dada una lista de strings, extraiga todas las strings, cuyos caracteres consecutivos tienen una diferencia común en el orden ASCII.

Entrada : test_list = [“abcd”, “egil”, “mpsv”, “abd”] 
Salida : [‘abcd’, ‘mpsv’] 
Explicación : en mpsv, los caracteres consecutivos están a una distancia de 3.

Entrada : test_list = [“abcd”, “egil”, “mpsw”, “abd”] 
Salida : [‘abcd’] 
Explicación : en abcd, los caracteres consecutivos están a una distancia de 1. 
 

Método #1: Usar lista de comprensión + all()

En esto, verificamos si cada carácter tiene una diferencia común usando all(), y la comprensión de listas se usa para iterar strings.

Python3

# Python3 code to demonstrate working of
# Equidistant consecutive characters Strings
# Using list comprehension + all()
  
# initializing list
test_list = ["abcd", "egil", "mpsv", "abd"]
  
# printing original list
print("The original list is : " + str(test_list))
  
# ord() used to get ASCII value
res = [sub for sub in test_list if all(ord(
    sub[idx + 1]) - ord(sub[idx]) == ord(sub[1]) - ord(sub[0]) for idx in range(0, len(sub) - 1))]
  
# printing result
print("Filtered Strings : " + str(res))
Producción

The original list is : ['abcd', 'egil', 'mpsv', 'abd']
Filtered Strings : ['abcd', 'mpsv']

 Método #2: Usando filter() + lambda + ord() + all()

En esto, realizamos la tarea de filtrar usando filter() y la función lambda. La tarea de ord() es obtener el equivalente ASCII de cada carácter.

Python3

# Python3 code to demonstrate working of 
# Equidistant consecutive characters Strings
# Using list comprehension + all()
  
# initializing list
test_list = ["abcd", "egil", "mpsv", "abd"]
  
# printing original list
print("The original list is : " + str(test_list))
  
# ord() used to get ASCII value 
res = [sub for sub in test_list if all(ord(sub[idx + 1]) - ord(sub[idx]) == ord(sub[1]) - ord(sub[0]) for idx in range(0, len(sub) -1 ))]
  
# printing result 
print("Filtered Strings : " + str(res))
Producción

The original list is : ['abcd', 'egil', 'mpsv', 'abd']
Filtered Strings : ['abcd', 'mpsv']

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 *