2017-05-14 47 views
3

我試圖遍歷列表,並將所有單詞附加到新列表中,排除具有重複字母的單詞。如何在文本文件中創建除重複字母以外的所有單詞列表

實施例:

words = ['cat', 'car', 'weevil', 'lizard', 'mammoth', 'cabbage', 'aardvaark'] 
newlist = [] 

for word in words: 
    for letter in word 
     if word.count(letter) > 1: 
      pass 
     else: 
      newlist.append(word) 

print(newlist) 
# Result 
['cat', 'cat', 'cat', 'car', 'car', 'car', 'weevil', 'weevil', 'weevil', 'weevil', 'lizard', 'lizard', 'lizard', 'lizard', 'lizard', 'lizard', 'mammoth', 'mammoth', 'mammoth', 'mammoth', 'cabbage', 'cabbage', 'cabbage', 'aardvaark', 'aardvaark', 'aardvaark'] 

的代碼實際上不工作,因爲像象鼻蟲例如將滿足用於字母「W」的word.count(字母)條件的字,對於兩個通過兩次'然後在這兩個'e'之後再滿足三次,這就是爲什麼它出現在列表中四次。或許我從錯誤的角度來看待這個問題,但我真的很難理解如何做到這一點。

回答

4

IIUC你的問題,你可以使用

>>> [w for w in words if len(set(w)) == len(w)] 
['cat', 'car', 'lizard'] 

如果一個詞有沒有重複的字母,那麼它的長度將是設定其字母的長度。剩下的就是把這個放入list comprehension

+0

真棒!這工作,並且是比我從講師那裏得到的答案更有效的10行代碼,謝謝。 –

0

嘗試使用標準庫

words = ['cat', 'car', 'weevil', 'lizard', 'mammoth', 'cabbage', 'aardvaark'] 
newlist = list(filter(lambda x: unduplicate_letter(x), words)) 

def unduplicate_letters(w): 
    for letter in w: 
     if w.count(letter) > 1: 
      return False 
    return True 
0

發生這種情況,因爲它是附加字每次它檢查信中提供filter功能。在追加單詞之前,您應該檢查所有字母,因此您可以添加一個檢查變量以查看是否所有字母都會通過然後追加單詞。例如:

words = ['cat', 'car', 'weevil', 'lizard', 'mammoth', 'cabbage', 'aardvaark'] 
    newlist = [] 

    for word in words: 
     check = 0 
     for letter in word: 
      if word.count(letter) > 1: 
       check = 1 

     if (check == 0): 
      newlist.append(word) 


    print(newlist) 

OUTPUT:

['cat', 'car', 'lizard'] 
0

在[1]:DEF重複(字): ...:對於i在字: ...:如果字。計數(I)> 1:返回True ...:返回False

在[4]:新= [逐字逐句在詞語如果不是重複(字)] 在[5]:新 缺貨[ 5]:['貓','汽車','蜥蜴「]

0

我們可以使用Python set(),以幫助更簡單的解決方案:

$ cat /tmp/tmp.py 
from __future__ import print_function 

words = ['cat', 'car', 'weevil', 'lizard', 'mammoth', 'cabbage', 'aardvaark'] 

newlist = list() 

for word in words: 
    # if word inlude multiple occurances of same character, set() 
    # will keep only one occurance. 
    if len(set(word)) == len(word): 
      newlist.append(word) 

print(newlist) 

$ python /tmp/tmp.py 
['cat', 'car', 'lizard'] 
相關問題