Python – Trouver l’index de départ de toutes les listes imbriquées

Dans cet article étant donné une matrice, la tâche consiste à écrire un programme Python pour calculer l’index de départ de toutes les listes imbriquées.

Exemple:

Saisir : liste_test = [[5], [9, 3, 1, 4], [3, 2], [4, 7, 8, 3, 1, 2], [3, 4, 5]]

Production : [0, 1, 5, 7, 13]

Explication : 1 + 4 = longueurs des 2 listes initiales = 5, 3, de la 3ème liste à partir du 5ème index [ 0 based indexing ],

donc 5. comme 3ème élément dans la liste des résultats.

Saisir : liste_test = [[5], [9, 3, 1, 4], [3, 2], [3, 4, 5]]

Production : [0, 1, 5, 7]

Explication : 1 + 4 = longueurs des 2 listes initiales = 5, 3, de la 3ème liste à partir du 5ème index [ 0 based indexing ],

donc 5. comme 3ème élément dans la liste des résultats.

Méthode #1 : Utiliser loop + len()

Dans ce cas, la longueur de chaque sous-liste est calculée à l’aide de len() et additionnée, cumulativement, et ajoutée comme résultat intermédiaire. L’index initial est dérivé des longueurs des sous-listes.

Python3

test_list = [[5], [9, 3, 1, 4], [3, 2], [4, 7, 8, 3, 1, 2], [3, 4, 5]]

print("The original list is : " + str(test_list))

res = []

lens = 0

for sub in test_list:

    

    res.append(lens)

    lens += len(sub)

print("Initial element indices : " + str(res))

Production:

La liste d’origine est : [[5], [9, 3, 1, 4], [3, 2], [4, 7, 8, 3, 1, 2], [3, 4, 5]]

Indices d’éléments initiaux : [0, 1, 5, 7, 13]

Méthode #2 : Utiliser accumuler() + carte() + len()

En cela, nous effectuons la tâche d’obtenir la sommation à l’aide d’accumul(), map() est utilisé pour obtenir les longueurs de toutes les sous-listes calculées à l’aide de len().

Python3

from itertools import accumulate

test_list = [[5], [9, 3, 1, 4], [3, 2], [4, 7, 8, 3, 1, 2], [3, 4, 5]]

print("The original list is : " + str(test_list))

res = [0, *accumulate(map(len, test_list[:-1]))]

print("Initial element indices : " + str(res))

Production:

La liste d’origine est : [[5], [9, 3, 1, 4], [3, 2], [4, 7, 8, 3, 1, 2], [3, 4, 5]]

Indices d’éléments initiaux : [0, 1, 5, 7, 13]

Méthode #3 : Utiliser type() et loop et une instruction if

En cela, on vérifie simplement le type de l’élément dans la liste si c’est une autre liste on imprime son index sinon non. Cette méthode fonctionnera quel que soit le nombre d’éléments de type non-liste dans la liste

Python3

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=",")

        

Production:

0,3,6,

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Aller en haut