如何通过对比两个列表的元素值生成由'0'、'1'组成的新列表
实现方案
核心思路
先把list1转为集合提升查询效率(集合的成员查询时间复杂度为O(1),远优于列表的O(n)),再遍历list2的每一个元素,根据元素是否存在于集合中返回对应字符串即可。
代码实现
# 输入示例 list1 = ['19', '17'] list2 = ['18', '19', '17', '20', '23'] # 转换为集合加速查询 set1 = set(list1) # 列表推导式生成结果 list3 = ['1' if item in set1 else '0' for item in list2] print(list3) # 输出:['0', '1', '1', '0', '0']
补充说明
哪怕list1和list2的规模很大,这个写法的时间复杂度也只有O(len(list1)+len(list2)),性能表现很好,完全符合给定的规则要求。
内容的提问来源于stack exchange,提问作者D_P
相关产品推荐
相关产品推荐

