Python中如何获取列表差集元素及其在原列表中的对应索引?
你之前调用方法失败的核心原因是拼写错误,列表获取元素位置的方法为.index()而非你写的.idex()。不过即使修正拼写,用该方法查询索引的效率偏低,且如果列表存在重复元素时只会返回首个匹配项的索引,容易得到错误结果,更推荐用以下方案实现需求:
实现代码
用Python内置enumerate()函数可在遍历列表时同时获取元素下标与对应值,直接在列表推导式中筛选符合条件的下标即可:
abbi = ['a','b','c','d','e'] james = ['a','b','c','d','e','f','g','h'] # 提前转为集合可大幅提升in判断的执行效率,列表元素越多性能收益越明显 abbi_set = set(abbi) diff_indexes = [idx for idx, item in enumerate(james) if item not in abbi_set] print(diff_indexes) # 输出结果:[5, 6, 7]
如果需要同时拿到差集元素和对应的索引,可直接收集二元组:
diff_info = [(idx, item) for idx, item in enumerate(james) if item not in abbi_set] print(diff_info) # 输出结果:[(5, 'f'), (6, 'g'), (7, 'h')]
内容的提问来源于stack exchange,提问作者Zegary
相关产品推荐
相关产品推荐

