-1
votes

Supprimer une valeur d'une liste imbriquée ne fonctionne pas

Mon assignation de collège ressemble jusqu'à présent comme ceci:

data = [[1,2,3], [4,5,6], [7,8,9]]
cout = [[]]*3
for i in range(len(data)):
    for j in range(len(data[i])):
        check = data[i][j]
        print(check)
        if data[i][j] % 2 == 0:
            cout[i].append(data[i][j])      

print(cout)


0 commentaires

5 Réponses :


2
votes

Il semble que vous souhaitiez extraire les éléments pairs de votre liste 2D. Il existe de nombreuses façons de faire cette

en utilisant 2 pour..in code> LOOPS H1>
[[2], [4, 6], [8]]


0 commentaires

1
votes

Bonjour bienvenue à Stackoverflow.

Modifiez votre initialisation pour COUT sur P>

data = [[1,2,3], [4,5,6], [7,8,9]]
cout = [[],[],[]]
for i in range(len(data)):
    for j in range(len(data[i])):
        check = data[i][j]
        print("i =", i)
        print("j =",j)
        print(check)
        print(cout)
        if data[i][j] % 2 == 0:
            cout[i].append(check)      

print(cout)


0 commentaires

1
votes

Le problème est dans la ligne cout = [[]] * 3 . Cela ne crée pas trois listes distinctes, mais 3 objets référencés dans la même liste. Une façon de résoudre ce problème consiste à écrire cout = [[], [], []] ou cout = [[] pour _ dans la plage (3)] . / p>

Vérifiez les autres réponses pour une manière plus propre d'atteindre ce que vous essayez d'atteindre, cependant.


1 commentaires

Merci pour cette information, je viens d'apprendre Python et à peu près innocent dans cette langue. Lorsque j'ai cherché à créer une liste imbriquée vide, j'ai trouvé qu'il était écrit comme ça. Donc, donner à ces informations vraiment m'a aidé. Merci



1
votes

Un autre Onliner: XXX


0 commentaires

1
votes

Pour filtrer les nombres inégaux des sublistes dans une liste Vous pouvez utiliser ListCompets imbriquées:

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

[[i for i in l if not i % 2] for l in data]
# [[2], [4, 6], [8]]


0 commentaires