2017-10-13 2 views
1

私はdouble forループを作成しました。まず、ラジカルリストから単語を取り出し、同様の単語を探して同じリストを繰り返します(比率は70%です)。 私が必要とするのは、最初のループがリストから単語を取るたびに、単語+新しいループと同じように選択されたリストを作成するということです。ループで新しいリストを作成し、名前を付けると、Pythonを使って別のリストのアイテムを埋め込むことができますか?

私はリスト内包表記でたくさん試しましたが、2番目のループからの単語を新しいリストに入れる方法を理解できません。作成された各リストにインデックス(x)が付いていればうまくいくと思った。 ここに私のコードです:

x = 0 

result = [[] for x in range(len(radicals))] 
for i in range(0, len(radicals)) : 
    for j in range(1, len(radicals)) : 
     result[x].append(words[i]) 
     result[x].append(words[j])  
print(result[0]) 

私が得た結果はラジカル内の単語の数がある*リストの数...

の単語リスト:印刷後

words = ["flore", "fleur", "fleuriste", "remaniement", "remanier", "manier", "maniable", "désaimer", "aimer", "aimant", "mêler", "emmêler", "désemmêler"] 

結果(ラジカル):

['flore', 'fleur', 'fleur', 'manie', 'mani', 'mani', 'mani', 'aim', 'aim', 'aim', 'mêl', 'mêl', 'emmêl'] 

私は新しいリストに単語を入れようとしています私は、マッチングプロセスのために根本的なものしか必要としません。

['flore', 'fleur', 'fleuriste'] 
['manier', 'remanier', 'remaniement'] 
['désaimer', 'aimer', 'aimant'] 
['mêler', 'emmêler', 'désemmêler'] 

私は本当にあなたの助けを使用することができます。

は、私のようなものを持っている必要があります。どうもありがとう !

+1

ようなものが必要だと思いますか?実際に使用されている唯一の変数は 'x'です – Mangohero1

+0

' radicals'と期待される結果の例を教えてください。 –

+0

@KirillErmolov私はちょうど私の質問を編集しました:) –

答えて

0

私はあなたがあなたがあなたの変数や、あなたの `for`ループの反復の両方に同じ変数名を使用している実現この

def is_match(radical_1, radical_2): 
    # return true if two radical are the same. 

# ...  

n = len(radicals) 
result = [] 
used_js = [] 
for i in range(n): 
    if i in used_js: 
     continue 
    matches = [words[i]] 
    js = (x for x in range(n) if x != i and x not in used_js) 
    for j in js: 
     if is_match(radicals[i], radicals[j]): 
      matches.append(words[j]) 
      used_js.append(j) 
    result.append(matches) 
+0

Kirill Ermolovありがとう、完璧に動作します! –

関連する問題