Python – Itertools.Product()
在数学中,两个集合的笛卡尔积定义为所有有序对 (a, b) 的集合,其中 a 属于 A,b 属于 B。请考虑以下示例以便更好地理解。
例子:
Input : arr1 = [1, 2, 3]
arr2 = [5, 6, 7]
Output : [(1, 5), (1, 6), (1, 7), (2, 5), (2, 6), (2, 7), (3, 5), (3, 6), (3, 7)]
Input : arr1 = [10, 12]
arr2 = [8, 9, 10]
Output : [(10, 8), (10, 9), (10, 10), (12, 8), (12, 9), (12, 10)]
上述解决方案可以通过循环来完成,但我们将使用一个特殊的Python库itertools.product()来查找笛卡尔积。让我们来看看这个Python库的工作和用例。
Python中的 Itertools 是什么?
Python Itertools 是Python中的一个库,它由多种方法组成,这些方法在各种迭代器中用于计算快速且代码高效的解决方案。
itertools.product() falls under the category called Combinatoric iterators of the Python itertools library.
注意:更多信息请参考Python Itertools
itertools.product() 做什么?
itertools.product() 用于从给定的迭代器中找到笛卡尔积,输出按字典顺序排列。 itertools.product() 可以以两种不同的方式使用:
- itertools.product(*iterables, 重复=1):
它以可选关键字“repeat”指定的次数返回所提供的迭代的笛卡尔积。例如,product(arr, repeat=3) 与 product(arr, arr, arr) 的含义相同。 - itertools.product(*iterables):
它返回作为参数提供的所有迭代的笛卡尔积。例如,产品(arr1,arr2,arr3)。
例子:
Python3
from itertools import product
def cartesian_product(arr1, arr2):
# return the list of all the computed tuple
# using the product() method
return list(product(arr1, arr2))
# Driver Function
if __name__ == "__main__":
arr1 = [1, 2, 3]
arr2 = [5, 6, 7]
print(cartesian_product(arr1, arr2))
输出:
[(1, 5), (1, 6), (1, 7), (2, 5), (2, 6), (2, 7), (3, 5), (3, 6), (3, 7)]