python常规方法实现数组的全排列

 这篇文章主要介绍了python常规方法实现数组的全排列,实例分析了全排列的概念及Python常规实现技巧,需要的朋友可以参考下

 
 

本文实例讲述了常规方法实现python数组的全排列操作。分享给大家供大家参考。具体分析如下:

全排列解释:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。

?

1
2
3
4
5
6
7
8
9
10

def perm(l):
if(len(l)<=1):
return [l]
r=[]
for i in range(len(l)):
s=l[:i]+l[i+1:]
p=perm(s)
for x in p:
r.append(l[i:i+1]+x)
return r

调用方法:

?

1
2
3
4
5
6
7
8
9
10
11
12

if __name__=='__main__':
""" default param is list(1,2,3,4,5) """
l=[];
if(len(sys.argv)<=1):
"""input=['%d' %(i) for i in xrange(1,6)]"""
l=list((1,2,3,4,5))
else:#input param looks like "2,3,4,5,6",no legal checks here.
input=str(sys.argv[1])
l=input.split(",")
for i in xrange(len(l)):
l[i] = int(l[i])
print perm(l)

希望本文所述对大家的Python程序设计有所帮助。

时间: 2024-11-11 22:25:18

python常规方法实现数组的全排列的相关文章

python常规方法实现数组的全排列_python

本文实例讲述了常规方法实现python数组的全排列操作.分享给大家供大家参考.具体分析如下: 全排列解释:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. def perm(l): if(len(l)<=1): return [l] r=[] for i in range(len(l)): s=l[:i]+l[i+1:] p=perm(s) for x in p: r.append(l[i:i+1]+x

遍历-怎么获取数组的全排列

问题描述 怎么获取数组的全排列 帮忙编写一个方法输入参数为不确定个数(假定为m)的List每个List的元素数不一定相同(假设元素数分别为k1k2...km).在这m个List中各取一元素组合成一个新的含有m个元素的List,所有可能组合就有k1*k2*...*km种,现在要求将这些组合列出来. 正常的话m个循环嵌套就可以写出来,但现在m相当于也是输入参数了,事先并不知道m是多少,战五渣实在不清楚应该怎么编写. 解决方案 http://bbs.csdn.net/topics/390212512

python numpy 提取数组问题

问题描述 python numpy 提取数组问题 a=[123456] 现要取数组,每三个为一组,取出下面这样: l1=[123] l2=[234] l3=[345] l4=[456] 就是这种取法.请问使用numpy怎么实现? 解决方案 Python numpy数组扩展效率问题Python Numpy数组保存Python Numpy数组保存 解决方案二: import numpy as np a = np.array([123456]) def split(a): for x in range

Python列表list数组array用法实例解析_python

本文以实例形式详细讲述了Python列表list数组array用法.分享给大家供大家参考.具体如下: Python中的列表(list)类似于C#中的可变数组(ArrayList),用于顺序存储结构.   创建列表   复制代码 代码如下: sample_list = ['a',1,('a','b')]   Python 列表操作 复制代码 代码如下: sample_list = ['a','b',0,1,3]   得到列表中的某一个值 复制代码 代码如下: value_start = sampl

python的字典数组问题。

问题描述 python的字典数组问题. 对于一个已经存有一定数据的字典数组,比如: dict = {'a':10, 'b':12, 'c':3, 'd':4} 假设我现在又有了个新数据b:5 请问如何可以将原来的字典中的b的值变成两个相减的结果(12-5=7)? for a,b in result.items(): if line[7] == a: b = b-line[4] 我写的这段代码好像没起作用 解决方案 for a,b in result.items(): if line[7] ==

python 列表去重(数组)的几种方法

在抓取页面图片时,为避免重复抓取,将抓取的img结果(结果集是list类型的)通过集合去重.这里总结了下网上搜集到的几种方法. 一.方法1  代码如下 复制代码 ids = [1,2,3,3,4,2,3,4,5,6,1] news_ids = [] for id in ids:     if id not in news_ids:         news_ids.append(id) print news_ids 思路看起来比较清晰简单 ,也可以保持之前的排列顺序. 二.方法2 通过set方法

python dict remove数组删除(del,pop)_python

比如代码 binfo = {'name':'jay','age':20,'python':'haha'} print binfo.pop('name')#pop方法删除键,并且返回键对应的值 print binfo##输出结果:{'python': 'haha', 'age': 20} del binfo['python']##内置方法删除元素 print binfo##输出结果:{'age': 20}

python处理PHP数组文本文件实例_python

需求: 对一个配置文件进行处理,拿出可用的字符来拼接,下面是原始文本,我们要得到这样的结果, 复制代码 代码如下: redis -h 127.0.0.1 -p 6379 | select 2 redis -h 127.0.0.1 -p 6379 | select 16 redis -h 127.0.0.1 -p 6379 | select 8 原始文本: 复制代码 代码如下:     'redis_list' => array(         'normal' => array(      

python不带重复的全排列代码_python

复制代码 代码如下: from sys import argvscript, start, end = argvvis = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]ans = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]def dfs(cur, m): ans[cur] = m if cur == int(end) - int(start) + 1:  for i in xrange(int(star