使用for循环生成长度递减的列表

2024-09-30 22:19:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个特殊的功能:

def create4(n):
    output = []
    for i in range(n):
        output.append(range(1+i,1))
    return output 

我想让它产生

[[1,2,3,4,5], [1,2,3,4], [1,2,3], [1,2],[1]] 

当我print create4(5)的时候。如何更改for循环以使代码产生所需的输出?你知道吗


Tags: 代码in功能foroutputreturndefrange
3条回答

您可以使用范围(a,b,-1)从a到b倒计时

def func(n) :
    output = []
    for i in range(n+1,1,-1):
        output.append(range(1,i))
    return output 

print func(4)

为了打印[[1,2,3,4],[2,3,4]。。。[4] ]:

def func(n) :
    output = []
    for i in range(1,n+1):
        output.append(range(i,n+1))
    return output 

print func(4)

在for循环中,range的参数顺序不对。range(m, n)将给出整数的范围x,其中m≤x<;n。你知道吗

还要注意的是,虽然这在Python2.7下实现了您想要的功能,但在Python3.x中,它们已经将range更改为始终返回迭代器。为了安全起见,将每个对range的调用包装在list()中。你知道吗

def create4(n):
    return sorted([range(1,x) for x in xrange(2,n+2)], reverse=True)

相关问题 更多 >