列表在Python中访问

1 python

我有两个这样的清单

Nodelist1=[[['B', 10], ['IN', 1000]], [['C', 15], ['OUT', 1001]], [['F', 30], ['IN', 1100]]]
Nodelist2= [[['G', 20], ['IN', 1000, 'OUT', 1111]], [['D', 25], ['INWARD', 1]]]
Run Code Online (Sandbox Code Playgroud)

我想要做的是我正在比较这两个列表

if len(Nodelist1[i][1])==len(Nodelist2[j][1]) 
Run Code Online (Sandbox Code Playgroud)

如果条件为真,那么我想删除Nodelist1[i][0]这是['B', 10]Nodelist1Nodelist2[j][1]它是['D', 25]Nodelist2.

然后我应该

Nodelist1 as [[['C', 15], ['OUT', 1001]], [['F', 30], ['IN', 1100]]]
Nodelist2 as [[['G', 20], ['IN', 1000, 'OUT', 1111]]]
Run Code Online (Sandbox Code Playgroud)

我的代码是这样的:

   if len(Nodelist1)>len(Nodelist2):
      for i in range(len(Nodelist1)):
         for j in range(len(Nodelist2)):
            if len(Nodelist1[i][1])==len(Nodelist2[j][1]):
                if Nodelist1[i][1]==Nodelist2[j][1]:
                    Nodelist1.remove(Nodelist1[i])
                    Nodelist2.remove(Nodelist2[j])  
                else:
                    Nodelist1.remove(Nodelist1[i])
                    Nodelist2.remove(Nodelist2[j])  
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误:

if len(Nodelist1[i][1])==len(Nodelist2[j][1]):
    IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

zha*_*gyu 5

您正在循环浏览列表中的元素.因此,当您移动到列表的末尾时,没有足够的元素.索引访问将引发IndexError.

  • 向后迭代:`for i in range(len(Nodelist1)-1,-1,-1)`和`for j in range(len(Nodelist2)-1,-1,-1)` (3认同)