Tengo una lista de precios de acciones de una empresa. Ahora quiero dividir la lista con múltiples intervalos. almacenaremos el precio como: Los primeros 2 elementos, luego los siguientes 3 elementos, luego 2 elementos, y así sucesivamente.
meta_stocks = [10, 9, 11, 15, 19, 22, 25, 11, 15, 17]Producción
meta_stocks = [[10, 9],[11, 15, 19],[22, 25],[ 11, 15, 17]]Puedo dividir la lista con 5 elementos cada uno, pero no puedo dividirla más
>>> [meta_stocks[i:i+interval2] for i in range(0, len(meta_stocks), interval2)] >>> [[10, 9, 11, 15, 19], [22, 25, 11, 15, 17]]Puede usar una lista de comprensión con la ayuda de itertools.cycle :
meta_stocks = [10, 9, 11, 15, 19, 22, 25, 11, 15, 17] from itertools import cycle start = 0 l = [2,3] c = cycle(l) [meta_stocks[start:(start:=start+next(c))] for i in range(len(l)*len(meta_stocks)//sum(l))]Producción:
[[10, 9], [11, 15, 19], [22, 25], [11, 15, 17]]Podría hacerlo así sin la ayuda de importaciones adicionales:
meta_stocks = [10, 9, 11, 15, 19, 22, 25, 11, 15, 17] meta_stocks_out = [] offset = 0 interval = 2 while offset + interval <= len(meta_stocks): meta_stocks_out.append(meta_stocks[offset:offset+interval]) offset += interval interval = 2 if interval == 3 else 3 print(meta_stocks_out)