Python中如何从嵌套列表中删除指定元素所在的子列表?
Python嵌套列表删除包含指定元素的子列表解决方案
你之前用mylist.remove('item73')失败的原因很直接:remove()方法会在列表中寻找完全匹配的元素,而你的列表里的元素是一个个子列表,不是单独的字符串'item73',所以它找不到要删除的目标,自然执行失败。
下面是几种可行的实现方式:
方法1:列表推导式(推荐,简洁高效)
直接生成一个过滤后的新列表,筛选掉包含目标元素的子列表:
mylist = [ ["item 1", 'green', 'round', 'sold'], ["item73", 'red', 'square', 'for sale'], ['item477', 'blue', 'rectangle', 'on hold'] ] target_item = 'item73' # 过滤掉包含target_item的子列表 mylist = [sublist for sublist in mylist if target_item not in sublist]
执行后mylist就会变成你想要的目标列表。
方法2:倒序遍历删除(修改原列表)
如果不想生成新列表,要直接修改原列表,需要倒序遍历索引,避免删除元素后索引偏移导致漏删:
mylist = [ ["item 1", 'green', 'round', 'sold'], ["item73", 'red', 'square', 'for sale'], ['item477', 'blue', 'rectangle', 'on hold'] ] target_item = 'item73' # 从最后一个元素往回遍历 for i in range(len(mylist)-1, -1, -1): if target_item in mylist[i]: del mylist[i]
方法3:使用filter函数
和列表推导式逻辑类似,通过filter过滤后转成列表:
mylist = [ ["item 1", 'green', 'round', 'sold'], ["item73", 'red', 'square', 'for sale'], ['item477', 'blue', 'rectangle', 'on hold'] ] target_item = 'item73' mylist = list(filter(lambda sublist: target_item not in sublist, mylist))
内容的提问来源于stack exchange,提问作者user8012864
相关产品推荐
相关产品推荐

