2011-10-30 108 views
2

比方說,我有話的列表中找到的話: 辭職 樹脂 redyed 抵抗 reeded的Python - 基於字符串中的指定重複的字符

我也有一個字符串」 .10.10"

我需要迭代整個列表,並找到字符串中存在重複字符的位置。

例如,字符串」 .10.10" 將查找的單詞‘redyed’因爲有E公司,其中有1的和有地方有0的D的。

另一個字符串 「.00.0。」會發現'reeded'這個詞,因爲在那個位置上有e。

我在Python嘗試至今都沒有真正值得打印。此刻,我查看字符串,將全部0添加到數組,然後將1添加到數組,然後嘗試在數組位置中查找重複的字符。但它非常笨拙,不能正常工作。

+0

這是功課?如果是這樣,請標記爲這樣。如果沒有,也許你可以告訴我們更多關於你想要解決的實際問題。 –

回答

5
def matches(s, pattern): 
    d = {} 
    return all(cp == "." or d.setdefault(cp, cs) == cs 
       for cs, cp in zip(s, pattern)) 

a = ["resign", "resins", "redyed", "resist", "reeded"] 
print [s for s in a if matches(s, ".01.01")] 
print [s for s in a if matches(s, ".00.0.")] 

打印

['redyed'] 
['reeded'] 
+0

多麼優雅的解決方案! – Acorn

+0

您可以使用與生成器表達式的過濾條件相同的'if',而不是將其用於三元表達式。 – agf

+0

@agf:三元表達不是必需的,你是對的。我在你評論的同一時間編輯了我的答案,但你的解決方案聽起來更好。 –

相關問題