2017-08-09 3 views
-1

Essayant essentiellement d'ajouter des nombres à la liste L en fonction d'un motif.Flux de contrôle Python List - pourquoi ne pas ignorer les éléments déjà dans la liste

À partir du point d'index 0, imprimez l'élément de ce point d'index. Le point d'index suivant devient alors l'int de l'élément que vous venez d'imprimer et le motif continue jusqu'à ce qu'il soit terminé. Le résultat est que si ce point d'index a déjà été utilisé, vous le déplacez vers la gauche jusqu'à ce que vous atteigniez un point d'index qui n'a pas été utilisé.

Voici ma solution au problème. Tout semble fonctionner, c'est-à-dire qu'il se déplace le long du nombre comme il est supposé cependant quand il rencontre un point d'index qu'il a déjà utilisé il imprime toujours cet élément.

Des idées pour lesquelles il ne semble pas que l'on saute correctement vers la gauche?

Output is: 
    If L is: L = [1, 4, 4, 1, 2, 4, 3] 
    N is: 1, 4, 2, 4, 2, 4, 2] when it should 
    [1, 4, 2, 4, 1, 4, 3] 

    # other way around 

L = [1, 4, 4, 1, 2, 4, 3] 
for index, s in enumerate(L): 
    print(index, s) 

print(' ', L) 

M = [] 
N = [] 
T = [] 


i = L[0] 
index_position = 0 

while len(T) != len(L): 
    if index_position in T: 
     index_position = index_position + 1 
    else: 
     N.append(i) 
     T.append(index_position) 
     index_position = i 
     i = L[index_position] 


print('N is: ', N) 
print('T is: ', T) 

Répondre

0
seen_that_before = [] 
N = [] 

for number in L 
    if number in seen_that_before: continue 
    seen_that_before.append(number) 
    N.append(number) 

Quelque chose comme ça?

Veuillez utiliser des noms de variables significatifs. N, T, L ou i sont déroutants.