当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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, 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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。