在python中迭代/检查子列表

时间:2017-12-31 16:28:13

标签: python python-3.x list

我有一个包含子列表的列表,每个子列表包含2个字符串:

   cor = [['s', 'urmange'], ['su', 'rmange'], ['sur', 'mange'], ['surm', 'ange'], ['surma', 'nge'], ['surman', 'ge'], ['surmang', 'e']]

现在我想检查子列表中的每两个元素是否存在于名为dic的字典中,如果这两个元素存在if subL[1] in Dic and subL[2] in Dic:我将输出如下:

sur mange

否则print("No match with dic")

我怎样才能用Python做到这一点?

这就是我一直在做的事情:

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)

我得到下一个输出:

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

出现此错误:

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

我以为我做错了什么!

1 个答案:

答案 0 :(得分:0)

您的代码存在的问题是,您的range函数正在从&#34; 0&#34;返回i的值。 to&#34; len(sub_list)-1&#34;。但是在for循环中,您正试图访问sub_list的&#34; i + 1&#34;元素。所以,当&#34; i&#34;的价值是len(sub_list) - 1,&#34; i + 1&#34;成为&#34; len(sub_list)&#34;这不是您的子列表的有效索引(列表的有效索引始终在0到len(列表)的范围内 - 1)

因此,如果更改范围函数的结束,则代码将正常工作。即你需要使用:

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