J'ai une liste avec des sous-listes. Je veux imprimer toutes les sous-listes de longueur égale à 3.
Je fais ce qui suit en python:
for x in values[:]:
if len(x) == 3:
print(x)
values
est la liste originale. Le code ci-dessus imprime-t-il chaque sous-liste d'une longueur égale à 3 pour chaque valeur de x
? Je veux afficher les sous-listes oùlength == 3
une seule fois.
Le problème est résolu. Le problème vient de l'éditeur Eclipse. Je ne comprends pas la raison, mais il n'affiche que la moitié de ma liste lorsque je lance ma boucle.
Dois-je modifier certains paramètres dans Eclipse?
print values
et montrer la sortie ici? edit: ou vérifiez simplement qu'il n'est pas vide.Réponses:
Essaye ça,
x in mylist
est meilleur et plus lisible quex in mylist[:]
et votrelen(x)
devrait être égal à3
.ou si vous avez besoin de plus de compréhension pythonique, utilisez des listes de compréhension
la source
Vous pouvez aussi bien utiliser
for x in values
plutôt quefor x in values[:]
; ce dernier fait une copie inutile. De plus, bien sûr, ce code vérifie une longueur de 2 plutôt que de 3 ...Le code imprime seulement un élément par valeur de
x
- etx
itère sur les éléments devalues
, qui sont les sous-listes. Il n'imprimera donc chaque sous-liste qu'une seule fois.la source
values
.Voici la solution que je recherchais. Si vous souhaitez créer List2 qui contient la différence des éléments numériques dans List1.
Notez que while
len(list1)
vaut 11 (éléments),len(list2)
ne sera que 10 éléments car nous démarrons notre boucle for à partir de l'élément avec l'index 1 dans la liste1 et non depuis l'élément avec l'index 0 dans la liste1la source
Faites ceci à la place:
la source