Python | División de lista personalizada

Las aplicaciones de desarrollo y, a veces, de aprendizaje automático requieren dividir listas en listas más pequeñas de manera personalizada, es decir, en ciertos valores en los que se debe realizar la división. Esta es una utilidad bastante útil para tener conocimiento. Analicemos ciertas formas en que se puede realizar esta tarea.

Método #1: Usar la comprensión de listas +zip()

Al combinar el poder de la comprensión de listas y zip(), esta tarea se puede lograr. En esto, comprimimos el principio y el final de la lista y luego seguimos cortando la lista a medida que llegan y eliminando nuevas listas de ellos.

# Python3 code to demonstrate 
# to perform custom list split
# using list comprehension + zip()
  
# initializing string  
test_list = [1, 4, 5, 6, 7, 3, 5, 9, 2, 4]
  
# initializing split index list 
split_list = [2, 5, 7]
  
# printing original list
print ("The original list is : " + str(test_list))
  
# printing original split index list
print ("The original split index list : " + str(split_list))
  
# using list comprehension + zip()
# to perform custom list split
res = [test_list[i : j] for i, j in zip([0] + 
          split_list, split_list + [None])]
  
# printing result
print ("The splitted lists are : " +  str(res))
Producción:

The original list is : [1, 4, 5, 6, 7, 3, 5, 9, 2, 4]
The original split index list : [2, 5, 7]
The splitted lists are : [[1, 4], [5, 6, 7], [3, 5], [9, 2, 4]]

 
Método #2: Usaritertools.chain() + zip()

La tarea realizada por la función de comprensión de lista de obtener los fragmentos divididos también se puede realizar mediante la función de string. Esto es más útil cuando deseamos manejar listas más grandes ya que este método es más eficiente.

# Python3 code to demonstrate 
# to perform custom list split
# using itertools.chain() + zip()
from itertools import chain
  
# initializing string  
test_list = [1, 4, 5, 6, 7, 3, 5, 9, 2, 4]
  
# initializing split index list 
split_list = [2, 5, 7]
  
# printing original list
print ("The original list is : " + str(test_list))
  
# printing original split index list
print ("The original split index list : " + str(split_list))
  
# using itertools.chain() + zip()
# to perform custom list split
temp = zip(chain([0], split_list), chain(split_list, [None]))
res = list(test_list[i : j] for i, j in temp)
  
# printing result
print ("The splitted lists are : " +  str(res))
Producción:

The original list is : [1, 4, 5, 6, 7, 3, 5, 9, 2, 4]
The original split index list : [2, 5, 7]
The splitted lists are : [[1, 4], [5, 6, 7], [3, 5], [9, 2, 4]]

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 *