您的位置:

python穷举数组的所有组合(python元组和数组)

本文目录一览:

如何穷举(任意个数组)的成员的组合?

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) 的代码,仅供参考