2011-10-30 10 views
2

に指定された繰り返し文字に基づいて発見言葉はのは、私は単語のリストを持っているとしましょう: 辞任 樹脂 は が アシの茂っのPython - 文字列

に抵抗redyed私も」.10.10"

を文字列を持っています

私はリストを反復して、文字列に数字がある同じ場所に繰り返し文字がある単語を見つける必要があります。

たとえば、文字列「.10.10」には、「1」があり、0があるところにeがあるため、「redyed」という単語が見つかります。

もう1つの文字列 ".00.0"その位置にeがあるので、「reeded」という単語が見つかります。

これまでの私の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:三項表現は必要ではありませんでした。あなたがコメントしたのと同じくらい私の答えを編集しましたが、あなたのソリューションはより良いものになりました。 –