📜  Python – 元组列表中的第 K 列产品

📅  最后修改于: 2022-05-13 01:55:09.833000             🧑  作者: Mango

Python – 元组列表中的第 K 列产品

有时,在使用Python列表时,我们可能会有一个任务,我们需要使用元组列表并获取它的第 K 个索引的乘积。在处理数据信息时,此问题在 Web 开发领域有应用。让我们讨论可以执行此任务的某些方式。

方法#1:使用列表理解+循环
可以使用上述功能的组合来执行此任务。在此,索引的乘积使用显式乘积函数发生,列表理解驱动列表中每个元组的第 K 个索引元素的迭代和访问。

# Python3 code to demonstrate working of
# Tuple List Kth Column Product
# using list comprehension + loop
  
# getting Product
def prod(val) :
    res = 1 
    for ele in val:
        res *= ele
    return res 
  
# initialize list
test_list = [(5, 6, 7), (1, 3, 5), (8, 9, 19)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initialize K
K = 2
  
# Tuple List Kth Column Product
# using list comprehension + loop
res = prod([sub[K] for sub in test_list])
  
# printing result
print("Product of Kth Column of Tuple List : " + str(res))
输出 :
The original list is : [(5, 6, 7), (1, 3, 5), (8, 9, 19)]
Product of Kth Column of Tuple List : 665

方法#2:使用imap() + loop + itemgetter()
以上功能的组合也可以完成这个任务。这种方法是基于生成器的,建议在我们有一个非常大的列表的情况下使用。在此,product函数用于执行产品,itemgetter 获取第 K 个索引,imap() 执行映射元素以提取产品的任务。仅适用于 Python2。

# Python code to demonstrate working of
# Tuple List Kth Column Product
# using imap() + loop + itemgetter()
from operator import itemgetter
from itertools import imap
  
# getting Product
def prod(val) :
    res = 1 
    for ele in val:
        res *= ele
    return res 
  
# initialize list
test_list = [(5, 6, 7), (1, 3, 5), (8, 9, 19)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initialize K
K = 2
  
# Tuple List Kth Column Product
# using imap() + loop + itemgetter()
idx = itemgetter(K)
res = prod(imap(idx, test_list))
  
# printing result
print("Product of Kth Column of Tuple List : " + str(res))
输出 :
The original list is : [(5, 6, 7), (1, 3, 5), (8, 9, 19)]
Product of Kth Column of Tuple List : 665