如果字符串存在,删除列表和列表中的下一个列表元素

Del list and next list element in list if string exist

我有一个例子:

list = [['2 a', 'nnn', 'xxxx','last'], ['next, next'], ['3', '4', 'next']]

for i in range(len(list)):
  if list[i][-1] == "last":
    del(list[i+1])
    del(list[i])

我想删除最后一项是 "last" 和列表中的下一项的列表。 在这个例子中每次都有问题 - 我尝试了不同的配置,用 numpy 数组替换 - 没有任何帮助。

引用: IndexError: list index out of range

我希望这个列表的最终结果是['3', '4', 'next']

给我一些提示或帮助我如何解决它。

试试这个:

l = [['2 a', 'nnn', 'xxxx','last'], ['next, next'], ['3', '4', 'next']]
delete_next = False
to_ret = []
for x in l:
    if x[-1] == 'last':
        delete_next = True
    elif delete_next:
        delete_next = False
    else:
        to_ret.append(x)

如果需要删除则使用变量存储

循环列表,如果该迭代的最后一个元素 == 'last' 则跳过,否则追加到新列表。

此外,不建议在迭代列表时编辑列表,因为可能会发生奇怪的事情,如上面评论中所述,例如索引发生变化。

l = [['2 a', 'nnn', 'xxxx','last'], ['next, next'], ['3', '4', 'next']]
newlist = []
for i in l:
    if i[-1] == 'last':
        continue
    else:
        newlist.append(i)