Python – 列表中第 k 列的乘积


列表可以在方括号内包含任意数量的子列表,子列表之间用逗号分隔。一旦在方括号内的列表数据结构中定义了元素,就不能更改它们。因此,在列表中,我们可以将多个值存储在一起,从而减少复杂的运算。列表可以包含元素和另一个称为子列表的列表。

在这篇文章中,我们将介绍如何将列元素相乘,为了更好地理解,让我们来看一个例子。该列表包含三个子列表,每个子列表包含三个元素。程序员决定计算每个列表的最后一个元素(索引值为 2)的所有元素的乘积。

List = [[1, 2, 3],
	[4, 5, 6],
	[7, 8, 9]]

将第二个索引元素相乘,即 3*6*9 = 162 是返回的乘积。同样,Python 程序使用不同的方法执行这些功能,从而提高效率并减少时间。

方法

  • 方法 1 − 使用 for 循环

  • 方法 2 − 使用 reduce 方法

方法 1:使用 for 循环计算列表中列表的第 k 列的乘积的 Python 程序

for 循环将遍历给定的元素列表,并找到列表中列表的指定索引值的乘积。

算法

  • 步骤 1 − 使用两个参数定义函数

  • 步骤 2 − 使用 isinstance(),我们可以检查给定的输入是否存在于列表中。

  • 步骤 3 − 在下面的代码中,它被指定为 2,因此打印结果;另一方面,当指定的值大于 2 时,它将执行 return 语句。

  • 步骤 4 − 然后它检查三行(三个列表)是否具有足够的且相等的列。

  • 步骤 5 − 使用 for 循环计算乘积值并将其存储在名为“result”的变量中

  • 步骤 6 − 列表用整数和三个子列表初始化。

  • 步骤 7 − 打印最终输出。

示例

#function is defined with two parameters
def product_cols(lst,cols_val):
    #To check whether the input is in the given list
    if not isinstance(lst,list):
        raise Exception(f"object {type(file)} isn't list type")
    
    #if loop is used to check whether all column and indexes are correct
    for a,row in enumerate(lst,start=1):
        try:
            temp=row[cols_val]
        except IndexError:
            raise Exception(f"{str(a)}th given values is not within the limit{str(cols_val)}.")           
              
    # The product is calculated using for loop
    result = 1
    for each_row in lst:
        result *= each_row[cols_val]
        
    return result
#initializing the list element
list1 = [[1, 2, 3], 
           [4, 5, 6], 
           [7, 8, 9]]
#The final output is printed for the elements in index value of 2
print(product_cols(list1, 2))

输出

162

方法 2:使用 reduce() 方法计算列表中列表的第 k 列的乘积的 Python 程序

这个过程看起来很简单,但是使用 reduce 方法实现程序比较繁琐。导入所需的模块,并根据给定的输入值执行程序。

算法

  • 步骤 1 − 导入所需的模块以使用 reduce 和 operator 等函数。

  • 步骤 2 − 使用列表的列表和列索引值作为两个参数定义函数。

  • 步骤 3 − 检查输入,判断它是否存在于给定的列表中。

  • 步骤 4 − 然后检查行是否正确地包含所有列元素。

  • 步骤 5 − 在 reduce 函数的帮助下,计算列表中列表的乘积,并使用 print() 函数返回结果。

示例

#importing the module to use reduce function
from functools import reduce
#importing the operator
import operator
#defining the function with two parameters
def product_cols(lst,cols_val):
#To check whether the input is in the given list
    if not isinstance(lst,list):
        raise Exception(f"object {type(file)} isn't list type")
    
    #if loop is used to check whether all column and indexes are correct
    for a,row in enumerate(lst,start=1):
        try:
            temp=row[cols_val]
        except IndexError:
            raise Exception(f"{str(a)}the given values is not within the limit{str(cols_val)}.")           
              
    return reduce(operator.mul,[each_row[cols_val] for each_row in lst])
#initializing the list with set of sublists
list1 = [[1, 2, 3], 
           [4, 5, 6], 
           [7, 8, 9]]
#Finally printing the list after the multiplication
print(product_cols(list1, 2))

输出

162

结论

Python 属于高级语言,使用 Python 的人员可以使用简单的概念和功能找到问题的解决方案。该语言由多种数据结构组成,其中列表是最常见的。本文介绍了使用 functools 模块和 for 循环方法计算第 k 列乘积的不同方法。

更新于:2023年9月4日

73 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告