2个list取差集
在实际开发中,经常需要对两个列表进行操作,其中一个常见的需求是取两个列表的差集。Python内置的集合操作可以非常方便地实现这个功能,本文介绍两种不同的方法,适用于不同的场景。
方法一:set()函数
可以使用Python内置函数set()
构造一个集合,再通过集合的差集运算获取两个列表的差集。这种方法比较简单,适用于列表中的元素不重复,并且元素类型为基本数据类型(如字符串、数字等)的场景。
示例代码:
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
set1 = set(list1)
set2 = set(list2)
diff = set1 - set2
print(diff) # 输出 {1, 2}
上面的代码中,set()
函数将列表转换为集合,-
运算符计算两个集合的差集。输出结果为一个集合对象{1, 2}
,其中包含两个列表不同的元素。
方法二:for循环遍历
如果列表中的元素类型比较复杂,不能使用集合的差集运算,可以使用for循环遍历的方式实现两个列表的差集。这种方法兼容更多的元素类型,并且可以处理列表中元素重复的情况。
示例代码:
list1 = [1, 2, 3, 3, 4, 5]
list2 = [3, 4, 5, 5, 6, 7]
diff = []
for i in list1:
if i not in list2:
diff.append(i)
print(diff) # 输出 [1, 2]
上面的代码中,定义了空列表diff
,然后使用for循环遍历list1
中的每个元素,判断该元素是否在list2
中出现过,如果没有出现则添加到diff
列表中。输出结果为一个列表对象[1, 2]
,其中包含两个列表不同的元素。
总的来说,两个列表的差集是一个非常常见的需求,本文介绍了两种不同的实现方法,可以根据实际需要选择不同的方法来实现。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:2个list取差集 - Python技术站