使用可变数量的for循环创建元组

问题描述 投票:0回答:3

给出nk,我需要创建所有长度为k的元组,其条目是从range(n)(0到n-1),以使该元组的条目按字典顺序排列,并在其中加括号特定格式。具体来说,元组从内到外在每对周围都有括号。

例如,如果n=3k=4,那么我希望输出中包含类似(((0,0),1),2)的内容,但not不包含(((0,0),2),1)的东西。

下面的代码适用于此特定实例。问题是我不知道如何概括k,这是下面的代码中的[[for循环数。我只能对特定的k执行此操作,例如此处的k=4。我真的需要能够对[k]的any值执行此操作。n=3 k=4 my_list = [] for a in range(n): x = a for b in range(a,n): y = (x,b) for c in range(b,n): z = (y,c) for d in range(c,n): w = (z,d) my_list.append(w) print my_list

输出:

[(((0, 0), 0), 0), (((0, 0), 0), 1), (((0, 0), 0), 2), (((0, 0), 1), 1), (((0, 0), 1), 2), (((0, 0), 2), 2), (((0, 1), 1), 1), (((0, 1), 1), 2), (((0, 1), 2), 2), (((0, 2), 2), 2), (((1, 1), 1), 1), (((1, 1), 1), 2), (((1, 1), 2), 2), (((1, 2), 2), 2), (((2, 2), 2), 2)]

给出n和k,我需要创建所有长度为k的元组,其条目的范围是从range(n)(0到n-1),以使该元组的条目按字典顺序排列,并带有特定格式的括号。 ..

python for-loop variables tuples python-2.x
3个回答
1
投票
您可以尝试这样的事情:


0
投票
n=4 k=4 my_list=[(((a,b),c),d) for a in range(n) for b in range(a,n) for c in range(b,n) for d in range(c,n) ] print my_list

0
投票
所以它的顺序与您的顺序不同,但是只要它们全部都需要生成
© www.soinside.com 2019 - 2024. All rights reserved.