Python - 索引匹配元素乘积
索引匹配元素乘积指的是两个不同的列表,其中包含元素并分别设置为相应的变量。如果找到公共匹配项,则通过乘法过滤元素。为了解决这个问题,Python 有一些内置函数,例如 range()、len()、zip()、prod()、reduce() 和 lambda()。
让我们来看一个例子。
给定的输入列表
list_1 = [10, 20, 30, 40]
list_2 = [10, 29, 30, 10]
因此,在索引 0 和 2 中找到的公共匹配项,其乘积为 10*30 = 300。
语法
以下语法在示例中使用
range()
range() 是 Python 中的内置函数,它根据给定的范围返回数字序列。
len()
len() 是 Python 中的内置函数,它返回对象的长度。
zip()
内置函数
prod()
prod() 是 Python 中的内置函数,它返回所有元素的乘积。
reduce()
reduce 是 Python 中的内置方法,它遵循 functools 模块,通过接受两个参数(函数和可迭代对象)来返回单个值。
lambda()
lambda 函数提供了一种使用 lambda 关键字声明简短匿名函数的快捷方式。lambda 函数只有一个表达式。
使用 for 循环
在下面的示例中,我们将通过在各自的变量中创建两个列表来启动程序。然后将初始值 p 设置为 1,这将用于与列表元素的乘积。接下来,使用 for 循环使用内置函数 len() 迭代第一个输入列表。使用 if 语句,它检查第一个列表的索引是否与第二个列表的索引匹配。如果找到公共匹配项,则通过乘以 1 来过滤这些列表元素,从而简化输出。
示例
lst1 = [10, 20, 30, 40, 50, 60] lst2 = [10, 34, 3, 89, 7, 60] p = 1 for i in range(len(lst1)): if lst1[i] == lst2[i]: p *= lst1[i] print("Result of index match element Product:\n", p)
输出
Result of index match element Product: 600
使用列表推导式和 zip() 函数
在下面的示例中,程序使用列表推导式,其中 zip() 方法将两个不同的列表组合在一起以查找公共匹配项。如果两个列表中的公共元素匹配,则它通过对这些元素进行乘积来返回过滤结果。
示例
# Using list comprehension and zip() lst1 = [10, 20, 30, 40, 50, 60] lst2 = [10, 34, 30, 89, 7, 60] # Initialize the initial value of the Product product = 1 match_item = [x for x, y in zip(lst1, lst2) if x == y] # Using if-statement to iterate the matching element if match_item: product = 1 for element in match_item: product *= element print("Result of index match element Product:\n", product)
输出
Result of index match element Product: 18000
使用 Numpy 库
在下面的示例中,程序使用 numpy 库和对象引用作为 np。然后创建两个列表,这些列表将用于查找公共索引元素。接下来,将列表转换为各自变量中的数组,这将用作元素数组。现在,从两个数组中找到公共索引元素,并使用 prod() 将所有公共元素相乘并显示结果。
示例
import numpy as np # create the list lst1 = [10, 20, 30, 40, 50, 60] lst2 = [10, 34, 30, 89, 50, 6] # Convert the list into an array arr1 = np.array(lst1) arr2 = np.array(lst2) # Set the condition for matching element match_item = arr1[arr1 == arr2] prod_idx = np.prod(match_item) # Display the result print("Result of index match element Product:\n", prod_idx)
输出
Result of index match element Product: 15000
使用 Functools 库
pip install functools
上述所需的命令对于在系统上安装以运行基于 functools 的特定程序是必要的。
在下面的示例中,使用 functools 库启动程序,并定义名为 reduce 的模块,该模块将计算索引匹配元素。然后使用列表推导式,其中 zip() 函数包含两个列表以设置等效条件以查找公共匹配项。接下来,使用一些内置函数 - reduce()、lambda 和 if - 设置基于匹配元素乘积的条件。最后,显示结果。
示例
from functools import reduce # Create the list lst1 = [10, 20, 30, 40, 7, 60] lst2 = [10, 34, 30, 89, 7, 60] # Set the condition based on the matching element matching_elements = [x for x, y in zip(lst1, lst2) if x == y] prod_idx = reduce(lambda x, y: x * y, matching_elements) if matching_elements else 1 # display the product print("Result of index match element Product:\n", prod_idx)
输出
Result of index match element Product: 126000
结论
索引匹配元素是可以使用某些特定条件和操作(例如 numpy 库、functools 库、列表推导式和 for 循环)进行过滤的公共元素。此程序有一些相关的应用程序,例如数据分析和数据过滤。