Python: encuentre el índice inicial de todas las listas anidadas

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *