列表循环对比问题:如何输出符合条件的元组第二个元素
解决方案
你的问题出在只遍历了元组的id部分,丢失了和name的关联——原代码里的列表推导式[x[0] for x in second_var]只提取了所有id,循环时只能拿到id,自然没法输出对应的name。
咱们直接修改遍历逻辑,保留元组里的id和name关联即可:
first_var = ["id1","id2","id3"] second_var = [("id1","name1"),("id2","name2"),("id3","name3"),("id4","name4"),] # 遍历每个完整元组,同时解构出id和name for current_id, current_name in second_var: if current_id not in first_var: print(current_name)
运行这段代码就会输出name4,正好是你需要的结果。
性能优化小技巧
如果你的first_var和second_var数据量较大,建议把first_var转换成集合,因为集合的成员查找速度远快于列表(集合查找是O(1)时间复杂度,列表是O(n)):
first_set = set(first_var) # 转成集合提升查找效率 for current_id, current_name in second_var: if current_id not in first_set: print(current_name)
这样既解决了核心问题,又能让代码在大数据场景下跑得更快~
内容的提问来源于stack exchange,提问作者Ahmad Alzoughbi
相关产品推荐
相关产品推荐

