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

时间:2013-11-18 01:36:28

标签: python list python-2.7 for-loop

我有一个特殊的功能:

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循环使代码生成所需的输出?

3 个答案:

答案 0 :(得分:1)

您可以使用范围(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)

答案 1 :(得分:0)

你的for循环中有range的参数乱序。 range(m, n)将为您提供 x 的整数范围,其中m≤x< Ñ

另请注意,虽然这可以在python 2.7下执行所需,但在python 3.x中,它们已将范围更改为始终返回迭代器。为安全起见,请将每次通话打包到range中的list()

答案 2 :(得分:0)

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