Hey, je tentais de supprimer un élément formant une liste (sans utiliser set
):Suppression d'un élément dans une liste
list1 = []
for i in range(2,101):
for j in range(2,101):
list1.append(i ** j)
list1.sort()
for k in range(1,len(list1) - 1):
if (list1[k] == list1[k - 1]):
list1.remove(list1[k])
print "length = " + str(len(list1))
La fonction set
fonctionne très bien, mais je veux appliquer cette méthode. Sauf que je reçois:
IndexError: list index out of range
sur la déclaration:
if (list1[k] == list1[k - 1]):
Edité pour ajouter (Merci à Ned Batchelder) le code de travail est:
list1 = []
for i in range(2,101):
for j in range(2,101):
list1.append(i ** j)
list1.sort()
k = 0
while k < len(list1) - 1: # while loop instead of for loop because "The range function is evaluated once before the loop is entered"
k += 1
if (list1[k] == list1[k - 1]):
list1.remove(list1[k])
list1.sort()
k -= 1 # "If you find a duplicate, you don't want to move onto the next iteration, since you'll miss potential runs of more than two duplicates"
print "length = " + str(len(list1))
Je ne suis pas sûr de ce que vous demandez - quel ensemble fonction? Que voulez-vous dire, "appliquer cette méthode?" –
Je pense qu'il ne veut pas avoir de doublons dans sa liste. –
L'objet 'set', comme dans' s = ensemble ([2, 2, 3, 4]) 'Je pense :) Est-ce devoir? – cji