代码之家  ›  专栏  ›  技术社区  ›  Ran

在python中迭代/检查子列表

  •  -5
  • Ran  · 技术社区  · 8 年前

    我有一个包含子列表的列表,每个子列表包含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 回复  |  直到 8 年前
        1
  •  0
  •   Moinuddin Quadri    8 年前

    代码的问题是 range 函数正在返回的值 i 从“0”到“len(sub\u list)-1”。但在你的 for 循环,您正在尝试访问 sub_list . 所以,当“i”的值为 len(sub_list) - 1 ,则“i+1”变为“len(sub\u list)”,它不是子列表的有效索引 (列表的有效索引始终在0到len(list)-1的范围内) .

    因此,如果您更改range函数的endbound,代码将正常工作。i、 e.您需要使用:

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