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 循环)进行过滤的公共元素。此程序有一些相关的应用程序,例如数据分析和数据过滤。

更新于:2023年8月16日

295 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告