python - 删除列表中与其他列表中的匹配项相对应的每个项目
问题描述
我展示了许多此类案例中的两个案例来解释问题。每个案例都有两个列表。第一个列表 ienu
包含元素 ID ,它必须与第二个列表 ie 中每个元组的第一个元素匹配nu_ew
。如果找到匹配项,我想从第二个列表中删除每次出现的具有相同 ID 的元组,即nu_ew
.
问题是我能够成功地从案例 2 中删除所有所需的元素(元组),但最后一次出现的元素(元组)即('Na23', 0.0078838)
对应于最后一个 IDnu
在案例 1 中仍未删除。
我正在寻找任何方法来获得所需的结果。非常感谢任何建议。
情况1:
nu=['F19', 'U234', 'U235', 'U238', 'Cl35', 'Cl37', 'Na23']
nu_ew = [('Mg24', 0.070385), ('Mg25', 0.0092824),
('Mg26', 0.0106276), ('F19', 0.42348),
('U234', 1.083506277), ('U235', 0.0014516),
('U238', 0.202605), ('Cl35', 0.0454252),
('Cl37', 0.0153641), ('Na23', 0.047303),
('F19', 0.0521210), ('U234', 3.61168759),
('U235', 0.000483890), ('U238', 0.067535),
('F19', 0.0217170), ('Na23', 0.0078838),
('Cl35', 0.0181700), ('Cl37', 0.0061456)]
案例2:
nu=['F19', 'U234', 'U235', 'U238']
nu_ew = [('Mg24', 0.068893), ('Mg25', 0.009085),
('Mg26', 0.0104025), ('F19', 0.414511),
('U234', 1.060551431), ('U235', 0.0014209),
('U238', 0.198313), ('Cl35', 0.0444628),
('Cl37', 0.0150386), ('Na23', 0.046301),
('F19', 0.0510167), ('U234', 5.65627430),
('U235', 0.00075782), ('U238', 0.105767),
('F19', 0.034011)]
我试着做:
for n in nu:
for ind, id_wf in enumerate(nu_ew):
if n == id_wf[0]:
del nu_ew[ind]`
print(nu_ew)`
解决方案
我会在这里使用列表理解:类似
result = [t for t in nu_ew if t[0] not in nu]
对于更大的列表
nu_as_set = set(nu)
result = [t for t in nu_ew if t[0] not in nu_as_set]
推荐阅读
- c - 未定义对“sqrt”的引用,但仅在使用变量时且仅在 CodeBlocks 中
- javascript - 无法在 Mapbox React 地图中渲染地图标记
- ssh - 在 gcp 实例上使用 Ansible 连接到另一个实例错误
- flutter - Flutter:连续调整两个文本子项的大小
- python - 如何将列表打印到单独的列表中python
- django - 如何处理 django 视图中的错误?
- java - CXF - 方法参数为空
- python - 孟加拉语单词在 manim 中全错
- android - Google 代理访问 Messages by Google 中的网址
- firebase - Flutter:Firebase从用户ID读取数据