如果字符串存在,删除列表和列表中的下一个列表元素
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)
我有一个例子:
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)