Python程序 计算两个列表的对称差集
在Python中,可以使用列表将多个项保存在单个变量中。Python用于存储数据集合的四种内置数据类型之一是列表,另外三种类型是元组,集合和字典,每种类型都有独特的用途。
什么是列表?
使用方括号创建列表。在Python中,最有效的工具是列表,因为它们不必一定是同质的。在一个列表中可以找到整数、字符串和对象等不同的数据类型。由于列表是可变的,所以甚至在创建后也可以对其进行更改。
列表中的对称差分
两个列表LIST1和LIST2之间的对称差分是指分别在LIST1或LIST2中但不在两个列表中都出现的元素的集合。
有多种方法可以在Python中计算两个列表之间的对称差集,我们将使用最有效的方式来查找相同之处。
我们已经将列表转换为集合,然后在这些集合之间执行了对称差分。
算法
- 创建列表
-
将列表转换为集合
-
打印转换集合的对称差分
-
打印列表的对称差分
例子
在下面的程序中,通过’in’关键字我们可以找到两个列表之间的差异。in关键字有两个功能。
- 确定字符串、列表、元组、范围等中是否存在值。
-
为了在循环中重复遍历列表。
L_1 = [11, 12, 13]
L_2 = [12, 13, 42]
L_3 = [3, 42, 5]
# 将列表转换为集合
set_1 = set(L_1)
set_2 = set(L_2)
# 当传递转换集合作为参数时,现在打印对称差异
print(set_1.symmetric_difference(set_2))
# 将列表转换为集合并将其作为参数传递时,现在打印对称差异
print(set_2.symmetric_difference(L_3))
输出
{42, 11}
{13, 3, 12, 5}
例子
在这里,我们制作了两个列表,然后创建了一个空临时变量。然后我们使用for循环遍历列表中的数字。如果语句检查数字是否是公共的,那么元素将被添加到第一个临时变量中。然后打印具有不同元素的列表。
list_1 = [1, 35, 20, 25, 70, 35, 80]
list_2 = [25, 80, 35]
temp_3 = []
for element in list_1:
if element not in list_2:
temp_3.append(element)
print(temp_3)
输出
[1, 20, 70]
使用列表推导式
在这种方法中,我们明确将列表转换为集合,然后使用减法运算符仅从中删除一个。转到Python中的集合进行其他集合引用。这是我们之前使用的一种类似的策略。列表推导式语法被用来代替嵌套循环,这是唯一的区别。
list_1 = [13, 15, 22, 25, 30, 54, 40]
list_2 = [54, 45, 30, 13]
SET_1 = set(list_2)
temp_3 = [x for x in list_1 if x not in SET_1]
print(temp_3)
输出
[15, 22, 25, 40]
不使用set()
在这种方法中,通过基本的组合技术从两个列表中复制元素,同时定期检查它们是否存在于另一个列表中。
例子
在下面的程序中,我们定义了一个名为Difference的函数,它将两个列表作为参数。该函数创建一个新列表list_dif,其中包含原始列表中不存在的项目。然后它打印出这个新列表和两个原始列表之间的差异。在这个例子中,它打印出[1,12,25,22,30,20]。
#通过不使用set()方法来获取两个列表的差异
def Difference(list1,list2):
list_dif = [i for i in list_1 + list_2 if i not in list_1 or i not in list_2]
return list_dif
list_1 = [1,12,25,22,30,65,70]
list_2 = [65,20,70]
list_3 = Difference(list_1,list_2)
print(list_3)
输出
[1, 12, 25, 22, 30, 20]
使用对称差集
对称差集()方法返回既在第一个集合中又在第二个集合中的元素。与两个集合的共享元素不同,该方法不返回交集。
示例
list_1 = [23,18,45,25,40,23,40]
list_2 = [23,40,35]
set_difference = set(list_1)。symmetric_difference(set(list_2))
temp_3 =列表(set_difference)
print(temp_3)
输出
[35,45,18,25]
结论
在本文中,我们使用了四种不同的方法来计算python中两个列表之间的对称差异。每种方法都有其独特性和处理任务的不同方式。