本文目录一览:
- 1、如何穷举(任意个数组)的成员的组合?
- 2、python 数组组合
- 3、Python问题 运用穷举法
- 4、python 数组里面求和为某固定值的所有组合?
- 5、python怎么生成list的所有元素的组合
- 6、求python语言 从m个数中选择n个 所有组合的代码(只要所有组合情况即可,不要排列)
如何穷举(任意个数组)的成员的组合?
后
int a1,a2,a3....ai i=你要用几个数
int b[i]
for(a1=0;a1n-i;a1++)
{
b[0]=a[a1];
for(a2=a1+1;a2n-i+1;a2++)
{
b[1]=a[a2];
……………………
写到 ai
然后输出数组b
} 第一个for循环结束
python 数组组合
mm=[['a','b','c','d','e'],[1,2,3,4],[5,6,7,8],[9,10,11,12,13]]
longs=[]
for n in mm:
longs.append(len(n))
ll = max(longs)
print ll
outall=[]
for i in range(0,ll,2):
outone = []
for j in mm:
if i ll-1:
print i
outone.append(j[i])
outone.append(j[i+1])
else:
try:
outone.append(j[i])
except:
pass
outall.append(outone)
print outall
结果:[['a', 'b', 1, 2, 5, 6, 9, 10], ['c', 'd', 3, 4, 7, 8, 11, 12], ['e', 13]]
代码中的2,就是你要的,改成4,下面i改到+3为止。
Python问题 运用穷举法
7744
首先,车号的模式是XXYY
其次,确定整数的范围:32-99
最后,确认出来这个整数是88,也就是车号是7744
python 数组里面求和为某固定值的所有组合?
l = [2,3,4,5,6,7,8,10,12,13,23,34,56]
def combination(l, n):
l = list(sorted(filter(lambda x: x = n, l)))
combination_impl(l, n, [])
def combination_impl(l, n, stack):
if n == 0:
print(stack)
return
for i in range(0, len(l)):
if l[i] = n:
stack.append(l[i])
combination_impl(l[i + 1:], n - l[i], stack)
stack.pop()
else:
break
combination(l, 22)
python怎么生成list的所有元素的组合
生成排列可以用product:
from itertools import product
l = [1, 2, 3]
print list(product(l, l))
print list(product(l, repeat=4))
组合的话可以用combinations:
from itertools import combinations
print list(combinations([1,2,3,4,5], 3))
下面是我以为没有combinations然后自己写的,没有itertools的python(2.6以下)可供参考。
import copy
def combine(l, n):
answers = []
one = [0] * n
def next_c(li = 0, ni = 0):
if ni == n:
answers.append(copy.copy(one))
return
for lj in xrange(li, len(l)):
one[ni] = l[lj]
next_c(lj + 1, ni + 1)
next_c()
return answers
print combine([1, 2, 3, 4, 5], 3)
输出:
[[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]
求python语言 从m个数中选择n个 所有组合的代码(只要所有组合情况即可,不要排列)
def combinations(iterable, r):
# combinations('ABCD', 2) -- AB AC AD BC BD CD
# combinations(range(4), 3) -- 012 013 023 123
pool = tuple(iterable)
n = len(pool)
if r n:
return
indices = list(range(r))
yield tuple(pool[i] for i in indices)
while True:
for i in reversed(range(r)):
if indices[i] != i + n - r:
break
else:
return
indices[i] += 1
for j in range(i+1, r):
indices[j] = indices[j-1] + 1
yield tuple(pool[i] for i in indices)这是Python帮助文档中 itertools.combinations(iterable, r) 的代码,仅供参考