Python

您所在的位置:网站首页 python求乘积 Python

Python

#Python| 来源: 网络整理| 查看: 265

 

1. 笛卡尓乘积

在数学中,两个集合X和Y的笛卡尓乘积(Cartesian product),又称直积,表示为 X × Y ,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0), (a,1), (a,2), (b,0), (b,1), (b, 2)}。有时我们需要在python求两个list的笛卡尔乘积,其实很简单,一行代码搞定。

2. 示例

例如,求a={1,2,3}与b={0,1,2}的笛卡尔乘积,与a={1,2,3}自身的笛卡尔乘积,python代码如下:

#-*-coding:utf-8-*- import itertools; a=[1,2,3]; b=[4,5,6]; print("a,b的笛卡尔乘积:",end="") for x in itertools.product(a,b): print(x,end="") print() print("a自身的笛卡尔乘积:",end="") for x in itertools.product(a,a): print(x,end="") print()

运行结果如下:

a,b的笛卡尔乘积:(1, 4)(1, 5)(1, 6)(2, 4)(2, 5)(2, 6)(3, 4)(3, 5)(3, 6) a自身的笛卡尔乘积:(1, 1)(1, 2)(1, 3)(2, 1)(2, 2)(2, 3)(3, 1)(3, 2)(3, 3)

 

3. itertools模块

值得注意的是,上述代码中的itertools是一个python的标准库,可以直接引入使用。

itertools模块下有如下几个函数可供使用:

function description itertools.product 笛卡尔积 itertools.permutations 排列 itertools.combinations 组合,没有重复 itertools.combinations_with_replacement 组合,有重复

代码示例:

>>> import itertools >>> for i in itertools.product('ABCD', repeat = 2): ... print i, ... ('A', 'A') ('A', 'B') ('A', 'C') ('A', 'D') ('B', 'A') ('B', 'B') ('B', 'C') ('B', 'D') ('C', 'A') ('C', 'B') ('C', 'C') ('C', 'D') ('D', 'A') ('D', 'B') ('D', 'C') ('D', 'D') >>> for i in itertools.permutations('ABCD', 2): ... print i, ... ('A', 'B') ('A', 'C') ('A', 'D') ('B', 'A') ('B', 'C') ('B', 'D') ('C', 'A') ('C', 'B') ('C', 'D') ('D', 'A') ('D', 'B') ('D', 'C') >>> for i in itertools.combinations('ABCD', 2): ... print i, ... ('A', 'B') ('A', 'C') ('A', 'D') ('B', 'C') ('B', 'D') ('C', 'D') >>> for i in itertools.combinations_with_replacement('ABCD', 2): ... print i, ... ('A', 'A') ('A', 'B') ('A', 'C') ('A', 'D') ('B', 'B') ('B', 'C') ('B', 'D') ('C', 'C') ('C', 'D') ('D', 'D')

 

参考资料:

[1]. Python官方文档:https://docs.python.org/3.6/library/itertools.html

[2].yongh701的CSDN:https://blog.csdn.net/yongh701/article/details/52605536

[3]. kitt blog:http://chaoren.is-programmer.com/posts/42538.html?utm_source=tuicool&utm_medium=referral

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3