Python | Ordenar lista numérica y alfabética alternativa

A veces, mientras realizamos la clasificación en la lista, tenemos un problema en el que necesitamos realizar un tipo particular de clasificación en el que necesitamos clasificar de formas alternativas en las que tenemos números y alfabetos ordenados en orden. Analicemos ciertas formas en que se puede realizar esta tarea.

Método #1: Usoisalpha() + isnumeric() + zip_longest()
La combinación de los métodos anteriores se puede utilizar para realizar esta tarea. En esto, separamos los números y los alfabetos y luego los ordenamos por separado y los unimos usando zip_longest().

# Python3 code to demonstrate 
# Sort alternate numeric and alphabet list
# using isalpha() + isnumeric() + zip_longest()
from itertools import zip_longest
  
# Initializing list
test_list = ['3', 'B', '2', 'A', 'C', '1']
  
# printing original list
print("The original list is : " + str(test_list))
  
# Sort alternate numeric and alphabet list
# using isalpha() + isnumeric() + zip_longest()
num_list = sorted(filter(str.isnumeric, test_list), 
                       key = lambda sub: int(sub))
  
chr_list = sorted(filter(str.isalpha, test_list))
res = [ele for sub in zip_longest(num_list, chr_list)
                              for ele in sub if ele]
      
# printing result 
print ("List after performing sorting : " + str(res))
Producción :

The original list is : ['3', 'B', '2', 'A', 'C', '1']
List after performing sorting : ['1', 'A', '2', 'B', '3', 'C']

Método #2: Usosorted() + key + lambda + isnumeric()
La combinación de los métodos anteriores se puede utilizar para realizar esta tarea. En esto, realizamos la clasificación de manera alternativa usando la función ord() y lambda, probando usando isnumeric().

# Python3 code to demonstrate 
# Sort alternate numeric and alphabet list
# using sorted() + key + lambda + isnumeric()
from itertools import zip_longest
  
# Initializing list
test_list = ['3', 'B', '2', 'A', 'C', '1']
  
# printing original list
print("The original list is : " + str(test_list))
  
# Sort alternate numeric and alphabet list
# using sorted() + key + lambda + isnumeric()
res = sorted(test_list, key = lambda ele : (int(ele), 0)
      if ele.isnumeric()
      else ((ord(ele) - 64) % 26, 1))
  
# printing result 
print ("List after performing sorting : " + str(res))
Producción :

The original list is : ['3', 'B', '2', 'A', 'C', '1']
List after performing sorting : ['1', 'A', '2', 'B', '3', 'C']

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 *