2017-05-26 46 views
0

說我有5個字如何採取單詞列表,並刪除具有相同字母多於一個的任何話

my_list = ['python', 'apple', 'always', 'sky', 'lie'] 

如何使用功能單獨掃描每個單詞和列表刪除具有相同字母的任何單詞是否會多次出現?

因此函數運行後,該列表應該只包含

my_list = ['python', 'sky', 'lie'] 
+0

乾杯的編輯@gahan,打字這儘可能快地完成。 – MLJezus

+1

你有什麼嘗試?你知道如何編寫一個函數嗎?你知道如何遍歷列表嗎?如何檢查字符串中的字符?將問題分解成最小的可管理件。 – Seanny123

回答

2

一個班輪:

result = [item for item in my_list if len(item) == len(set(item))] 
  • 使用列表中理解,使一個新的列表
  • 使用set到檢查長度是否改變(意味着有重複)

您可以編寫一個函數,使其更具可讀性:

def is_unique_string(s): 
    return len(s) == len(set(s)) 

result = [item for item in my_list if is_unique_string(s)] 

有已經是這裏的討論:Counting repeated characters in a string in Python

+0

這是有效的,因爲一個集合將只存儲一個字符 - 因此,如果單詞的長度與集合的長度相同 - 每個字母都是唯一的。 – cal97g

+0

@ cal97g感謝您的解釋。 – cizixs

0

這裏是你的答案

list = ['python', 'apple', 'always', 'sky', 'lie'] 
new_list = [] 
for string in list: 
    if len(string) == len(set(string)): 
     new_list.append(string) 

print(new_list) 
0
def has_duplicate(s): 
    for x in xrange(len(s)-1): 
     if s[x] in s[x+1:]: 
     return true 
    return false 

l=["python", "apple", "always", "sky", "lie"] 
y=[s for s in l if not has_duplicate(s)] 

檢查是否n_th字符在n_th字符刀削的字符串中。即

「蘋果」

  • 檢查在 「pple」
  • 檢查 「P」, 「PLE」 「一」,比賽
相關問題