四次元口袋 2019-07-24 14:56 采纳率: 0%
浏览 660

如何在迭代过程中从列表中删除项?

我正在对 Python 中的元组列表进行迭代,并尝试在它们满足某些条件时删除它们。

for tup in somelist:
    if determine(tup):
         code_to_remove_tup

我应该使用什么来代替code_to_remove_tup? 我不知道如何以这种方式移除这个项目。

  • 写回答

2条回答 默认 最新

  • weixin_38166163 2019-07-24 15:10
    关注

    你可以使用列表内涵来创建一个新的列表,只包含你不想删除的元素:
    somelist = [x for x in somelist if not determine(x)]
    或者,通过分配给 slice somelist [ : ,您可以修改现有的列表,只包含您想要的条目:
    somelist[:] = [x for x in somelist if not determine(x)]
    如果还有需要反映更改的其他对体裁列表的引用,那么这种方法可能很有用。
    除了 comprehension,您还可以在 Python 2使用 itertools:
    from itertools import ifilterfalse
    somelist[:] = ifilterfalse(determine, somelist)
    或者在 Python 3中也行:
    from itertools import filterfalse
    somelist[:] = filterfalse(determine, somelist)

    评论

报告相同问题?

悬赏问题

  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?
  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'