【发布时间】:2019-12-05 18:10:11
【问题描述】:
给定n 和k,我需要创建所有长度为k 的元组,其条目来自range(n)(0 到 n-1),这样元组的条目按字典顺序排列并且有括号以特定格式。具体来说,元组从内到外在每一对周围都有括号。
例如,如果n=3 和k=4,那么我希望输出包含(((0,0),1),2) 之类的内容,但不 包含(((0,0),2),1) 之类的内容。
下面的代码适用于这个特定的实例。问题是我不知道如何概括k,这是下面代码中的for 循环数。我只能为特定的k 执行此操作,例如此处的k=4。我真的需要能够为k 的任何值做到这一点。
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)]
【问题讨论】:
-
k是从哪里来的?是for循环的数量吗? -
请问这样做的目的是什么?
-
@user1558604:是的,k 是 for 循环的数量。
-
我不知道它是否是建模这个“算法”的最佳方法,但如果你想改变循环的数量,你可以将它转换为递归 k 次的递归函数......只要因为 k 不会变得太大并达到最大递归限制
-
那么您在 Python 中有一个图形并且想要删除“冗余”顶点?所以例如
(((0,0),1),2)等于(((0,0),2),1)?
标签: python for-loop variables tuples python-2.x