En este artículo dada una array, la tarea es escribir un programa Python para calcular el índice inicial de todas las listas anidadas.
Ejemplo:
Entrada: lista_prueba = [[5], [9, 3, 1, 4], [3, 2], [4, 7, 8, 3, 1, 2], [3, 4, 5]]
Salida: [0, 1, 5, 7, 13]
Explicación: 1 + 4 = longitudes de 2 listas iniciales = 5, 3, de la 3.ª lista comienzan desde el 5.º índice [indexación basada en 0],
por lo tanto, 5. como tercer elemento en la lista de resultados.
Entrada: lista_prueba = [[5], [9, 3, 1, 4], [3, 2], [3, 4, 5]]
Salida: [0, 1, 5, 7]
Explicación: 1 + 4 = longitudes de 2 listas iniciales = 5, 3, de la 3.ª lista comienzan desde el 5.º índice [indexación basada en 0],
por lo tanto, 5. como tercer elemento en la lista de resultados.
Método #1: Usar loop + len()
En esto, la longitud de cada sublista se calcula utilizando len() y se suma, acumulativamente, y se agrega como resultado intermedio. El índice inicial es derivado de las longitudes de las sublistas.
Python3
# Python3 code to demonstrate working of # Initial element index in Matrix # Using loop # initializing list test_list = [[5], [9, 3, 1, 4], [3, 2], [4, 7, 8, 3, 1, 2], [3, 4, 5]] # printing original list print("The original list is : " + str(test_list)) res = [] lens = 0 for sub in test_list: # lengths of sublist computed res.append(lens) lens += len(sub) # printing result print("Initial element indices : " + str(res))
Producción:
La lista original es: [[5], [9, 3, 1, 4], [3, 2], [4, 7, 8, 3, 1, 2], [3, 4, 5]]
Índices de elementos iniciales: [0, 1, 5, 7, 13]
Método n.º 2: Usar acumular() + map() + len()
En esto, llevamos a cabo la tarea de obtener la sumatoria usando Accum(), map() se usa para obtener las longitudes de todas las sublistas calculadas usando len().
Python3
# Python3 code to demonstrate working of # Initial element index in Matrix # Using accumulate() + map() + len() from itertools import accumulate # initializing list test_list = [[5], [9, 3, 1, 4], [3, 2], [4, 7, 8, 3, 1, 2], [3, 4, 5]] # printing original list print("The original list is : " + str(test_list)) # ignoring last index using "-1" # sum starting at 0 res = [0, *accumulate(map(len, test_list[:-1]))] # printing result print("Initial element indices : " + str(res))
Producción:
La lista original es: [[5], [9, 3, 1, 4], [3, 2], [4, 7, 8, 3, 1, 2], [3, 4, 5]]
Índices de elementos iniciales: [0, 1, 5, 7, 13]
Método #3: Usando type() y loop y una declaración if
En esto, simplemente verificamos el tipo del elemento en la lista si es otra lista imprimimos su índice de lo contrario no. Este método funcionará independientemente de la cantidad de elementos de tipo que no sean de lista en la lista
Python3
# This will print all the starting indexes # of sublists inside this list lis = [[1,2,3],4,5,[6,7,8],9,0,[10]] for i in lis: if type(i) == list: print(lis.index(i), end=",") # This code is contributed by BABAji
Producción:
0,3,6,
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