2017-12-31 224 views
-5

にサブリストをチェックし、私はサブリストを含むリスト、サブリストの各1は、2つの文字列が含まれていますそれ以外の場合は反復処理は/ pythonの

sur mange 

私は目行うことができますどのようにprint("No match with dic")

:二つの要素が存在する場合、それは、DICという名前の辞書に存在している場合 - リストif subL[1] in Dic and subL[2] in Dic:私のような出力を持っていますPythonにはありますか?

これは私がやっているものです。このエラーで

R3: You mean: ['sur', 'mange'] 

::私は次の出力を得る

for sub_list in cor: 
    for i in range (0,len(sub_list)): 
     if sub_list[i] in my_list and sub_list[i+1] in my_list: 
      print ("R3: You mean:", sub_list) 

Traceback (most recent call last): 
    File "<pyshell#88>", line 3, in <module> 
    if sub_list[i] in my_list and sub_list[i+1] in my_list: 
IndexError: list index out of range 

私が何か間違ったことをやっていると思いました!

+0

また、Pythonインデックスはゼロベースです。 –

+0

dictに "key"、 "value"、 "key-value"のペアとして存在しますか? –

+0

ああ、私がやっていることを追加するのを忘れました。これは厳しい考えです!投稿を編集します – Ran

答えて

0

コードの問題は、range関数が "0"から "len(sub_list)-1"の値をiに戻していることです。しかし、forループの中で、sub_listの "i + 1"番目の要素にアクセスしようとしています。したがって、 "i"の値がlen(sub_list) - 1である場合、 "i + 1"はサブリストの有効なインデックスではない "len(sub_list)"になります(リストの有効なインデックスは常に0〜len )-1)

したがって、範囲関数のendboundを変更すると、コードは正常に動作します。すなわち、あなたが使用する必要があります:

for i in range (0,len(sub_list)-1): 
#        ^subtracting one to make it fall in valid range