Supprimer un élément dans une liste à l'aide d'une boucle for
J'ai un tableau avec des sujets et chaque sujet a temps de connexion. Je veux comparer tous les sujets dans la liste. Si il y en a deux, les mêmes sujets, je tiens à ajouter le temps de ces deux sujets, et souhaitez également supprimer le deuxième sous réserve de l'information (sous réserve de nom et de temps).
Mais Si je supprime l'élément, la liste devient plus court, et j'obtiens un en dehors de la plage d'erreur. J'ai essayé de rendre la liste plus courte avec l'aide de subjectlegth-1, mais cela ne fonctionne pas.
...
subjectlegth = 8
for x in range(subjectlength):
for y in range(subjectlength):
if subject[x] == subject[y]:
if x != y:
#add
time[x] = time[x] + time[y]
#delete
del time[y]
del subject[y]
subjectlength = subjectlength - 1
jetez un oeil à docs.python.org/tutorial/...
OriginalL'auteur kame | 2010-01-13
Vous devez vous connecter pour publier un commentaire.
Itérer en arrière, si vous le pouvez:
et de même pour
y
.OriginalL'auteur Chris Jester-Young
Si les éléments de
subject
sont hashable:Le résultat sera dict avec
subject: time
paires clé-valeur.OriginalL'auteur Ignacio Vazquez-Abrams
La meilleure pratique est de faire une nouvelle liste des entrées à supprimer, et de les supprimer après la marche de la liste:
OriginalL'auteur Ned Batchelder
Une autre façon serait de créer l'objet et le temps des listes de nouveau, à l'aide d'une dict à la somme des temps des sujets récurrents (je suis en supposant que les sujets sont des chaînes de caractères c'est à dire hashable).
Je sais à propos de get et defaultdict, mais n'étais pas sûr si l'OP a été j'ai donc coincé avec une approche qui suppose moins de connaissances. Comme pour les keys() et values(), l'OP veut deux listes distinctes et les éléments() renvoie une liste d' (clé,valeur) des n-uplets.
Assez juste, dans la mesure où vous êtes perturbant l'OP design original aussi peu que possible. Mais un programme qui conserve des données appariées valeurs dans des listes distinctes vraiment doit être refait pour l'utilisation d'un dict. Que faire si la conception des appels pour l'ajout d'un instructeur ou un numéro de chambre? Devraient-ils être ajoutés par la clouant sur plus d'ordre sensible des listes? Vous ne l'OP un mauvais service en supposant que dict concepts sont au-delà de lui.
McGuire: Ceux-ci sont des choses que vous devriez dire à l'OP, pas moi. Je ne suis pas en supposant que dict concepts sont au-delà de lui, je suis à la protection contre la possibilité qu'il pourrait ne pas être suffisamment familiarisé avec les dicts encore.
OriginalL'auteur MAK
Si un
while
boucle est certainement un meilleur choix pour ce, si vous insistez sur l'utilisation d'unfor
boucle, on peut remplacer lalist
éléments à être supprimé avec Aucun, ou de toute autre distinguées l'une de l'élément, et de redéfinir lalist
après lafor
boucle. Le code suivant supprime les éléments de même à partir d'une liste d'entiers:Dans le cas de la question dans ce post:
OriginalL'auteur Reza Dodge