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))
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))
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