-1

我有一个例子:

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])

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

追溯: IndexError: list index out of range

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

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

4

2 回答 2

0

尝试这个:

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)

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

于 2020-05-12T18:54:44.260 回答
0

遍历列表,如果该迭代的最后一个元素 == '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)
于 2020-05-12T18:58:23.563 回答