在数学笛卡尔乘积的术语中,将两个集合定义为所有有序对(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, repeat=1):
它以可选关键字“repeat”指定的次数返回所提供的iterable的笛卡尔积。例如,product(arr,repeat = 3)表示与product(arr,arr,arr)相同。 - itertools.product(*iterables):
它返回所有可迭代的笛卡尔乘积作为参数。例如,product(arr1,arr2,arr3)。
例:
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)]
注:本文由纯净天空筛选整理自anubhavraj_08大神的英文原创作品 Python – Itertools.Product()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。