Python | Partición de segmento incremental en la lista

A veces, mientras trabajamos con listas, podemos encontrarnos con un problema en el que necesitamos dividir una lista de forma incremental, es decir, con cada porción, el número de elementos aumenta en 1. Esto tiene aplicación en la programación competitiva. Analicemos ciertas formas en que se puede realizar esta tarea.

Método #1: Uso de bucles
Este es el método de fuerza bruta mediante el cual se puede realizar esta tarea. Simplemente contamos e incrementamos manualmente el contador con cada iteración para el corte y la creación de claves de diccionario.

# Python3 code to demonstrate working of
# Incremental slice partition in list
# Using loop
  
# initializing list
test_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Incremental slice partition in list
# Using loop
res = {}
N = 1
strt = 0
while strt < len(test_list):
    res[N] = test_list[strt : strt + N]
    strt += N
    N += 1
  
# printing result 
print("The partitioned dictionary from list is : " + str(res))
Producción :

La lista original es: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
El diccionario particionado de la lista es: {1: [1], 2: [2, 3], 3: [4, 5, 6], 4: [7, 8, 9, 10]}

Método #2: Usarenumerate() + slice() + next() + iter() + count()
La combinación de las funciones anteriores se puede usar para realizar esta tarea. En esto, next()se usa para iterar la lista convertida en iterador por iter(). slice()Realiza el corte de lista. count() ayuda a administrar el contador y enumerate realiza un seguimiento de los elementos y los índices en la lista.

# Python3 code to demonstrate working of
# Incremental slice partition in list
# Using enumerate() + slice() + next() + iter() + count()
from itertools import islice, count
  
# initializing list
test_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Incremental slice partition in list
# Using enumerate() + slice() + next() + iter() + count()
res = {key : val for key, val in enumerate(iter(lambda i = iter(test_list),
                          c = count(1): list(islice(i, next(c))), []), 1)}
  
# printing result 
print("The partitioned dictionary from list is : " + str(res))
Producción :

La lista original es: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
El diccionario particionado de la lista es: {1: [1], 2: [2, 3], 3: [4, 5, 6], 4: [7, 8, 9, 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 *