为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中按索引删除列表中的多个元素

在Python中按索引删除列表中的多个元素

FFIVE 2021-09-02 17:19:32
我想按索引删除列表中的多个项目:dS = [0, 0.02, 0, 0.04, 0.07, 0]dN = [1, 0.02, 0.3, 0.7, 0.9]pos = [i for i, e in enumerate(dS) if e ==0]现在我想删除(在两个列表中)第一个列表中 0 位置的所有项目。
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

假设您有任何要删除的old_list索引列表pos:


new_list = [old_list[i] for i, e in enumerate(old_list) if i not in pos]

通过删除由 指定的索引处的元素,这将适用于您问题中的两个列表pos,只需替换old_list为您当前拥有的列表名称:


dS = [0, 0.02, 0, 0.04, 0.07, 0]

dN = [1, 0.02, 0.3, 0.7, 0.9]

pos = [i for i, e in enumerate(dS) if e ==0]

dS = [dS[i] for i, e in enumerate(dS) if i not in pos]

dN = [dN[i] for i, e in enumerate(dN) if i not in pos]

>>> dS, dN

([0.02, 0.04, 0.07], [0.02, 0.7, 0.9])

这适用于长度不同的列表,如上例所示。


查看完整回答
反对 回复 2021-09-02
?
呼唤远方

TA贡献1856条经验 获得超11个赞

我想删除(在两个列表中)第一个列表中 0 位置的所有项目。

好的,首先通过仅选择与第一个列表的非零项相同索引的项来处理第二个列表:

dN = [dN[i] for i, e in enumerate(dS) if e]

然后对dS(注意:filter在这种情况下将使用一个变体):

dS = list(filter(None,dS))


查看完整回答
反对 回复 2021-09-02
  • 3 回答
  • 0 关注
  • 449 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信