在Python中,列表(list)和集合(set)有不同的方法来执行交、并、差操作,但通常集合操作更加高效,因为它们是基于哈希表的。以下是这些操作的例子:
集合 (set) 操作
交集 (Intersection)
使用 &
运算符或 intersection()
方法来获取两个集合的交集。
set1 = {1, 2, 3, 4, 5} | |
set2 = {4, 5, 6, 7, 8} | |
# 使用 & 运算符 | |
intersection = set1 & set2 | |
print(intersection) # 输出: {4, 5} | |
# 使用 intersection() 方法 | |
intersection = set1.intersection(set2) | |
print(intersection) # 输出: {4, 5} |
并集 (Union)
使用 |
运算符或 union()
方法来获取两个集合的并集。
set1 = {1, 2, 3, 4, 5} | |
set2 = {4, 5, 6, 7, 8} | |
# 使用 | 运算符 | |
union = set1 | set2 | |
print(union) # 输出: {1, 2, 3, 4, 5, 6, 7, 8} | |
# 使用 union() 方法 | |
union = set1.union(set2) | |
print(union) # 输出: {1, 2, 3, 4, 5, 6, 7, 8} |
差集 (Difference)
使用 -
运算符或 difference()
方法来获取一个集合相对于另一个集合的差集(即只存在于第一个集合中但不存在于第二个集合中的元素)。
set1 = {1, 2, 3, 4, 5} | |
set2 = {4, 5, 6, 7, 8} | |
# 使用 - 运算符 | |
difference = set1 - set2 | |
print(difference) # 输出: {1, 2, 3} | |
# 使用 difference() 方法 | |
difference = set1.difference(set2) | |
print(difference) # 输出: {1, 2, 3} |
对称差集 (Symmetric Difference)
使用 ^
运算符或 symmetric_difference()
方法来获取两个集合的对称差集(即存在于一个集合中但不存在于另一个集合中的元素)。
set1 = {1, 2, 3, 4, 5} | |
set2 = {4, 5, 6, 7, 8} | |
# 使用 ^ 运算符 | |
symmetric_difference = set1 ^ set2 | |
print(symmetric_difference) # 输出: {1, 2, 3, 6, 7, 8} | |
# 使用 symmetric_difference() 方法 | |
symmetric_difference = set1.symmetric_difference(set2) | |
print(symmetric_difference) # 输出: {1, 2, 3, 6, 7, 8} |
列表 (list) 操作
列表本身没有内置的交、并、差操作,但你可以通过转换成集合来执行这些操作,然后再转回列表(如果需要的话)。
list1 = [1, 2, 3, 4, 5] | |
list2 = [4, 5, 6, 7, 8] | |
# 交集 | |
set1 = set(list1) | |
set2 = set(list2) | |
intersection_list = list(set1 & set2) | |
print(intersection_list) # 输出: [4, 5] | |
# 并集 | |
union_list = list(set1 | set2) | |
print(union_list) # 输出: [1, 2, 3, 4, 5, 6, 7, 8],注意顺序可能不同 | |
# 差集 | |
difference_list = list(set1 - set2) | |
print(difference_list) # 输出: [1, 2, 3] | |
# 对称差集 | |
symmetric_difference_list = list(set1 ^ set2) | |
print(symmetric_difference_list) # 输出: [1, 2, 3, 6, 7, 8],注意顺序可能不同 |
注意:由于集合是无序的,所以转换成列表后的元素顺序可能与原列表不同。如果需要保持顺序,你可能需要使用列表推导式或其他方法来替代集合操作