Completely remove one item from a list
本问题已经有最佳答案,请猛点这里访问。
如果我有这样的清单:
1 | MyList = [1,2,3,4,5,'hi', 6,7, 'hi', 8, 'hi', 9] |
如何从列表中删除所有"hi"项?我尝试过remove()方法,但它只工作一次:
1 2 3 | MyList.remove('hi') >>>> MyList [1,2,3,4,5,6,7,'hi',8,'hi',9] |
是的,我可以这样做:
1 2 | while 'hi' in MyList: MyList.remove('hi') |
但是有人知道比重复n次相同的指令更优雅的方法吗?
1 | MyList = [item for item in MyList if item != 'hi'] |
使用列表的理解:
1 | MyList = [v for v in MyList if v != 'hi'] |
本rebuilds列表只包含一个值
在其余的移动电话必须
我想你可以使用过滤功能。这里是文档:文档过滤
1 2 3 4 5 6 7 8 9 10 | MyList = [1,2,3,4,5,'hi', 6,7, 'hi', 8, 'hi', 9] def f(item, element="hi"): if item == element: return False else: return True print filter(f, MyList) >>> [1, 2, 3, 4, 5, 6, 7, 8, 9] |
感谢Tim,他pietzcker改善。F函数可能是短的
1 | def f(item, element="hi"): return item != element |
你可以这样表达:使用发电机
1 | NewList = (x for x in MyList if x != 'hi') |
然后你可以iterate本为