如何制作所有组合?

时间:2018-05-02 01:29:30

标签: python python-3.x

我正在尝试创建一个python程序,它生成n-1个数字长度为L的所有组合:

enter image description here

我尝试使用itertools,但无济于事。我试图使它在我的终端中给它参数5 3时产生上面的输出。我正在使用python3。解释会很棒。这是我的代码。

import sys
import itertools

def comb(A,n,k,p,lo):
    stuff = [A, n, k,p,lo]
    return itertools.combinations(stuff, len(stuff)

if __name__ == "__main__":
    d = len(sys.argv)>3
    n = int(sys.argv[1])
    k = int(sys.argv[2])
    A = []
    for i in range(k):
         A.append(0)
    if d: print("n:",n,"k:",k)
    comb(A,n,k,0,0)

3 个答案:

答案 0 :(得分:0)

strncpy(temp->now.lastname, f, sizeof(temp->now.lastname)); temp->now.score = s;

编辑:按指出来完成输入

答案 1 :(得分:0)

import sys
from itertools import combinations

if __name__ == "__main__":
    d = len(sys.argv)>3
    n = int(sys.argv[1])
    k = int(sys.argv[2])
    A = []
    for i in range(n):
        A.append(i)
    if d: 
        print("n:",n," k:",k)
    val = combinations(A, k)
    for i in val:
        print(i)

你不需要辅助功能我不认为

答案 2 :(得分:0)

这应该与python 3一起运行:

test.py

import sys
import itertools

def printArray(inputArray):
  print('[', str(inputArray)[1:-1], ']')

def comb(arr, r):
  output = itertools.combinations(arr, r)
  for x in output:
    printArray(x)

if __name__ == "__main__":
  arr = range(int(sys.argv[1]))
  r = int(sys.argv[2])
  comb(arr, r)

只需使用:python3 test.py 5 3

输出是:

[ 0, 1, 2 ]
[ 0, 1, 3 ]
[ 0, 1, 4 ]
[ 0, 2, 3 ]
[ 0, 2, 4 ]
[ 0, 3, 4 ]
[ 1, 2, 3 ]
[ 1, 2, 4 ]
[ 1, 3, 4 ]
[ 2, 3, 4 ]