我想按索引删除列表中的多个项目: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])
这适用于长度不同的列表,如上例所示。
呼唤远方
TA贡献1856条经验 获得超11个赞
我想删除(在两个列表中)第一个列表中 0 位置的所有项目。
好的,首先通过仅选择与第一个列表的非零项相同索引的项来处理第二个列表:
dN = [dN[i] for i, e in enumerate(dS) if e]
然后对dS
(注意:filter
在这种情况下将使用一个变体):
dS = list(filter(None,dS))
添加回答
举报
0/150
提交
取消