python 排列组合之itertools_python

python 2.6 引入了itertools模块,使得排列组合的实现非常简单:

复制代码 代码如下:

import itertools 

有序排列:e.g., 4个数内选2个排列:

复制代码 代码如下:

>>> print list(itertools.permutations([1,2,3,4],2))
[(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]

无序组合:e.g.,4个数内选2个:

复制代码 代码如下:

>>> print list(itertools.combinations([1,2,3,4],2))
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

时间: 2024-10-01 11:34:12

python 排列组合之itertools_python的相关文章

java-JAVA 生成 用0到9这十个数字 所有的排列组合(0不能再第一个)

问题描述 JAVA 生成 用0到9这十个数字 所有的排列组合(0不能再第一个) 用 0到9 生成 十位数的所有排列组合,数字0不能在第一个,这个生成的十位数, 不能有重复的数字. 解决方案 public static void main(String[] args) { String str[] = { "0", "1", "2", "3", "4", "5", "6"

C#非递归方式实现排列组合

C#以非递归方式实现三位排列组合,如下代码: //深度优先  class Program      {          static void Main(string[] args)          {              int[] number = new int[] { 1, 3, 5, 7 };              List data = new  List();              Stack openStack = new Stack();           

计算排列组合的php代码

前些天因为业务需要写了一段计算排列组合的代码,今天整理了一下,以备后用 <?php/** * 要解决的数学问题    :算出C(a,1) * C(b, 1) * ... * C(n, 1)的组合情况,其中C(n, 1)代表从n个元素里任意取一个元素 * * 要解决的实际问题样例:某年级有m个班级,每个班的人数不同,现在要从每个班里抽选一个人组成一个小组, *                       由该小组来代表该年级参加学校的某次活动,请给出所有可能的组合 */ /* ##########

浅析实现排列组合查询算法

所谓的排列组合查询就相当于GOOGLE高级查询中"包含以下全部的字词"查询,也就是说查询中必须包含所有查询关键词,而且他们的顺序可以是任意.以下程序段实现了这一功能.比如输入查询关键字:tom tina则最一般的情况是在程序中使用类似于"select sex from student where name like '%tom%tina%' or name like '%tina%tom%' ordered by age" 的查询语句实现以上的查询,因此如何得到'%

关于各种排列组合java算法实现方法

一.利用二进制状态法求排列组合,此种方法比较容易懂,但是运行效率不高,小数据排列组合可以使用 复制代码 代码如下: import java.util.Arrays; //利用二进制算法进行全排列 //count1:170187 //count2:291656 public class test { public static void main(String[] args) { long start=System.currentTimeMillis(); count2(); long end=S

PHP中排列组合及性能对比

  排列组合公式/排列组合计算公式公式P是指排列,从N个元素取R个进行排列. 公式C是指组合,从N个元素取R个,不进行排列了,但在php中我们可以用N种方法写出来了,但每一种写法的性能会不同,下面我们就来看看吧. 需求是这样的: 找到数组中所有可能的指定长度的组合,要求没有重复. 方法一: 代码如下   function getCombinationToString($arr,$m){ $result = array(); if ($m ==1){ return $arr; } if ($m =

字符 生成-简单的字符生成器-排列组合

问题描述 简单的字符生成器-排列组合 想要实现以下图片上的功能,上方选中我需要用的字母.数字,输入我需要生成的位数,最终列出所有的排列组合数据.求人帮忙,万分感谢. 解决方案 关键就是算法http://bbs.bccn.net/thread-347026-1-1.htmlhttp://outofmemory.cn/code-snippet/4237/c-pailie-zuhe-suanfa 解决方案二: 楼上说的对,关键就是排列组合的算法.最近做了有关排列组合的东西,代码是JAVA的,你是用什么

集合-排列组合 找真子集 不包含空集

问题描述 排列组合 找真子集 不包含空集 ** void solve(int cur_totalvar, int nextVar){ // 解决向量选择子集并求和 放到向量 for (int i = 0; i<cur_totalvar; ++i){ printf("%f ",num[i]); printf("chengchangshengn"); // ??? 放入变量 sunMombre.sun += num[i]; } if(cur_totalvar){

参数的排列组合3

如何获取排列组合的所有值呢? 之前咱们是求排列组合的取值个数,现在要求取值 首先我们考虑常规的情况: 我们有n个盒子,分别放置n个元素 第一回:我们从n个里面选择一个:有n种可能 第二回:我们从n-1个里面选择一个:有n-1种可能 第三回:我们从n-2个里面选择一个:有n-2种可能 第四回:我们从n-3个里面选择一个:有n-3种可能 -- 最后我们只有一个可选 直接上代码: /*** * @param base :[a,b,c,d] * @param times * @param remaini