Python - 过滤两个列表中对应相同索引的不相等元素
索引是元素在列表中的具体位置。两个列表中不相等的元素是指两个列表中元素不匹配的索引。在 Python 中,我们有一些内置函数,如 enumerate()、zip()、filter() 等,可用于过滤两个列表中对应相同索引的不相等元素。
我们来举个例子
给定列表,
lst_1 = [10, 20, 30, 40, 50]
lst_2 = [1, 20, 3, 40, 50]
那么最终结果变为 [20, 40, 50] 列表中的这些元素与对应的相同索引匹配。
语法
示例中使用了以下语法-
enumerate()
enumerate() 是 Python 中的一个内置函数,允许跟踪循环迭代。
zip()
zip() 是 Python 中的内置函数,它接受任何类型的参数 - 列表、元组、字典、集合等。
filter()
当我们需要根据特定条件过滤项目时,将应用 filter() 方法。简单来说,它允许用户迭代提取的那些元素以满足要求。
lambda
Python 中的这个 lambda 函数称为匿名函数。当需要函数对象时可以使用它。
list()
list() 是 Python 内置函数,用于创建列表对象、接受可迭代构造并将其转换为列表。
range()
range() 是 Python 内置函数,用于返回给定范围之间的元素序列。默认情况下,通过分配特定范围,初始范围始终以 0 开始并以 结束。
append()
Python 中的 append 方法用于在列表末尾添加元素。
使用 enumerate() 函数
该程序使用内置函数 enumerate() 通过接受名为 zip 的参数来跟踪两个列表的迭代。这两个函数都用于从两个列表中筛选不相等的元素,并找到相应的相同索引以打印结果。
示例
在下面的示例中,开始创建两个输入列表以在变量 list1 和 list2 中设置随机整数。然后它将使用列表推导式,其中 for 循环和 if 语句在一行中执行,以及 enumerate() 和 zip() 函数。所有这些过程都存储在变量 res 中。最后,我们在 str(res) 的帮助下打印结果。
# 初始化列表 list1 = ["abc", "bcd", "c", "d"] list2 = ["g", "b", "s", "d"] # 使用列表推导和 enumerate() res = [i for i, (val1, val2) in enumerate(zip(list1, list2)) if val1 != val2] # 结果打印 print("列表中不相等的索引元素:" + str(res))
输出
列表中不相等的索引元素:[0, 1, 2]
使用 filter() 和 lambda 函数
该程序使用内置函数 filter() 删除不相等元素,使用内置函数 lambda 将从两个列表中计算出相应的元素。
示例
在下面的例子中,我们首先在变量 l1 和 l2 中创建两个列表。然后使用内置函数 list(),该函数接受可迭代构造 filter()。filter() 接受两个参数 - lambda(检查两个列表是否对应相同的索引)和 zip(合并两个列表进行迭代),新的过滤器元素将其存储在变量 calc 中。接下来,创建列表推导以将新元素列表存储在变量 result 中。然后在变量 result 的帮助下打印结果。
L1 = [11, 2, 3, 4, 5] L2 = [1, 2, 3, 6, 5] calc = list(filter(lambda x: x[0] == x[1], zip(L1, L2))) result = [x[0] for x in calc] print("两个列表中对应的相同索引:",result)
输出
两个列表中对应的相同索引:[2, 3, 5]
使用 for 循环
程序使用 for 循环遍历第一个列表,并使用 if 语句检查两个列表的等价条件,并使用内置函数 append() 返回结果。
示例
在下面的例子中,我们将通过创建两个列表并将其存储在相应的变量(即 l1 和 l2)中来启动程序。然后在变量 result 中使用空列表 [],该变量将存储包含两个字典中对应匹配项的列表。现在它将使用 for 循环,其中变量 i 使用内置函数(即 range() 和 len())遍历第一个列表(即 l1)。使用 if 语句,它将检查 l1 和 l2 之间的模式匹配条件。如果项目匹配发现相等,则它通过 append() 函数返回筛选器列表结果。最后,我们在名为 result 的变量的帮助下打印输出。
# 创建项目列表 l1 = [1, 20, 3, 40, 5] l2 = [1, 2, 30, 6, 5] result = [] for i in range(len(l1)): if l1[i] == l2[i]: result.append(l1[i]) print("两个列表中对应的相同索引:", result)
输出
两个列表中对应的相同索引:[1, 5]
使用 Zip 和列表推导式
程序内置函数 zip() 允许迭代更多两个列表,并在 if 语句中使用等于"=="运算符来检查相同索引的对应关系。
示例
在下面的示例中,通过初始化两个变量 list_1 和 list_2 来存储输入列表,从而启动程序。然后使用列表推导式创建一个新的列表结果,其中包含两个列表中相同索引处相等的元素。zip 函数用于连续迭代两个列表。列表推导中的 if 语句 检查两个列表中相同索引处的元素是否相等。如果相等,则将元素添加到变量 result 中。最后,借助名为 result 的变量打印输出。
# 输入列表 list_1 = [1, 2, 3, 4, 5] list_2 = [1, 2, 9, 6, 5] # 在列表推导中使用 zip result = [x for x, y in zip(list_1, list_2) if x == y] print("两个列表中对应的相同索引:", result)
输出
两个列表中对应的相同索引:[1, 2, 5]
使用简单列表推导
程序使用列表推导,其中循环和条件表达式在一行中定义,以从两个列表中筛选出不相等的元素列表。
示例
在下面的示例中,在变量 lst_1 和 lst_2 中创建两个输入列表,用于从两个列表中筛选出不相等的元素。然后使用列表推导技术,其中变量 i 使用内置函数 len() 和 range() 迭代第一个列表。接下来,if 语句 检查两个列表之间的匹配条件,以计算对应相同索引,并在变量 res 中返回过滤结果。最后,它借助名为 res 的变量打印结果。
# 输入列表 lst_1 = [100, 200, 300, 400, 500] lst_2 = [100, 2, 300, 6, 50] # 列表推导式 res = [lst_1[i] for i in range(len(lst_1)) if lst_1[i] == lst_2[i]] print("两个列表对应的相同索引:", res)
输出
两个列表对应的相同索引:[100, 300]
结论
我们讨论了解决上述问题的各种方法问题陈述。过滤不相等元素会删除在两个列表中不相似的元素。这些程序通常用于各种应用,例如数据分析、数据同步、过滤搜索结果和协同过滤。