如何用基础Python找出一个列表中不在另一个列表里的元素
用基础Python找出两个列表的差异元素
方法1:列表推导式(推荐,保留元素顺序与重复项)
直接遍历目标列表,筛选出不在对比列表中的元素,逻辑清晰且能保留原顺序和重复元素:
arr1 = [1,2,3,4,5,6,7] arr2 = [1,2,3,4,5,6,7,8,9,10] diff = [x for x in arr2 if x not in arr1] print(diff) # 输出 [8,9,10]
方法2:集合差集(适合无重复元素的高效场景)
如果两个列表均无重复元素,可利用集合的差集操作提升效率,若需保持原顺序则结合列表推导式:
arr1 = [1,2,3,4,5,6,7] arr2 = [1,2,3,4,5,6,7,8,9,10] # 基础差集(无序) diff = list(set(arr2) - set(arr1)) # 保持原顺序的高效写法(集合查找为O(1),比列表查找更快) diff = [x for x in arr2 if x not in set(arr1)]
修复嵌套循环写法
你之前得到连续数字串,是因为错误地拼接字符串而非收集元素到列表。正确的嵌套循环实现如下:
arr1 = [1,2,3,4,5,6,7] arr2 = [1,2,3,4,5,6,7,8,9,10] diff = [] for num in arr2: exists = False for target in arr1: if num == target: exists = True break if not exists: diff.append(num) print(diff) # 输出 [8,9,10]
内容的提问来源于stack exchange,提问作者Pepwave Dave
相关产品推荐
相关产品推荐

