从列表中删除所有出现的值?

新手上路,请多包涵

在 Python 中 remove() 将删除列表中第一次出现的值。

如何从列表中删除 所有 出现的值?

这就是我的想法:

 >>> remove_values_from_list([1, 2, 3, 4, 2, 2, 3], 2)
[1, 3, 4, 3]

原文由 riza 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 520
2 个回答

功能方法:

Python 3.x

 >>> x = [1,2,3,2,2,2,3,4]
>>> list(filter((2).__ne__, x))
[1, 3, 3, 4]

或者

>>> x = [1,2,3,2,2,2,3,4]
>>> list(filter(lambda a: a != 2, x))
[1, 3, 3, 4]

Python 2.x

 >>> x = [1,2,3,2,2,2,3,4]
>>> filter(lambda a: a != 2, x)
[1, 3, 3, 4]

原文由 Mark Rushakoff 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用列表理解:

 def remove_values_from_list(the_list, val):
   return [value for value in the_list if value != val]

x = [1, 2, 3, 4, 2, 2, 3]
x = remove_values_from_list(x, 2)
print x
# [1, 3, 4, 3]

原文由 mhawke 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题