2017-10-21 41 views
0

Disons que j'ai une liste de mots comme indiqué ci-dessous,Suppression d'un mot dans une liste qui apparaît un après l'autre

A=['ab','bc','cd','de','de','ef','bc'] 

J'ai essayé d'utiliser des jeux comme on le voit ci-dessous,

def remove_similar_words(self,sent): 

    original_set = set() 
    result = [] 
    for item in sent: 
     if item not in original_set: 
      original_set.add(item) 
      result.append(item) 
    return result 

sent est la liste A.

Le résultat de la méthode ci-dessus serait

result=['ab','bc','cd','de','ef'] 

Mais, je dois le résultat soit,

needed_result=['ab','bc','cd','de','ef','bc'] 

Question: Comment puis-je changer mon code pour répondre à l'exigence de produisant la liste needed_result?

Aussi je voudrais éviter les ensembles puisque je dois préserver l'ordre.

Répondre

0
def remove_similar_words(sent): 

last = "" 
result = [] 
for item in sent: 
    if item != last: 
     last=item 
     result.append(item) 
return result 

A=['ab','bc','cd','de','de','ef','bc'] 
print (", ".join(remove_similar_words(A))) 
0

Il semblerait que vous ayez juste besoin de vérifier par rapport à la valeur précédente dans votre itérateur, pas de créer un original_set complet.