Python - 过滤两个列表中对应相同索引的不相等元素

pythonserver side programmingprogramming更新于 2023/12/29 14:45:00

索引是元素在列表中的具体位置。两个列表中不相等的元素是指两个列表中元素不匹配的索引。在 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_1list_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_1lst_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]

结论

我们讨论了解决上述问题的各种方法问题陈述。过滤不相等元素会删除在两个列表中不相似的元素。这些程序通常用于各种应用,例如数据分析、数据同步、过滤搜索结果和协同过滤。


相关文章