创建递减序列列表的Pythonic方法

创建递减序列列表的Pythonic方法,python,Python,而不是做: l_1 = range(0, 10056, 24) l_2 = range(0, 10032, 24) l_3 = range(0, 10008, 24) ... l_419 = range(0, 0, 24) l_together = list(l_1, l_2, ..., l_419) 我怎样才能以一种更为通俗的方式创建一个序列递减的列表呢?您可以通过简单的列表理解来实现这一点: bigL = [] diminish = 24 i = 10056 while i >= 0

而不是做:

l_1 = range(0, 10056, 24)
l_2 = range(0, 10032, 24)
l_3 = range(0, 10008, 24)
...
l_419 = range(0, 0, 24)
l_together = list(l_1, l_2, ..., l_419)

我怎样才能以一种更为通俗的方式创建一个序列递减的列表呢?

您可以通过简单的列表理解来实现这一点:

bigL = []
diminish = 24
i = 10056
while i >= 0: ## Just abstracting the code to easily modify it ... this will run while i is positive
    bigL.append(range(0, i, diminish)) ## Supply i and diminish and then append the list to bigL 
    i -= diminish ## Reduce i by diminish (by 24 in this case)
[range(0, i, 24) for i in reversed(range(0, 10056 + 1, 24))]
这相当于简单的for循环:

result = []
for i in reversed(range(0, 10056 + 1, 24)):
    result.append(range(0, i, 24))
其中任何一个都是完美的,而且是蟒蛇式的

或者,用简化的示例演示:

>>> n = 100
>>> step = 10
>>> result = [range(0, i, step) for i in reversed(range(0, n+1, step))]
>>> from pprint import pprint
>>> pprint(result)
[range(0, 100, 10),
 range(0, 90, 10),
 range(0, 80, 10),
 range(0, 70, 10),
 range(0, 60, 10),
 range(0, 50, 10),
 range(0, 40, 10),
 range(0, 30, 10),
 range(0, 20, 10),
 range(0, 10, 10),
 range(0, 0, 10)]

您可以通过简单的列表理解来完成此操作:

[range(0, i, 24) for i in reversed(range(0, 10056 + 1, 24))]
这相当于简单的for循环:

result = []
for i in reversed(range(0, 10056 + 1, 24)):
    result.append(range(0, i, 24))
其中任何一个都是完美的,而且是蟒蛇式的

或者,用简化的示例演示:

>>> n = 100
>>> step = 10
>>> result = [range(0, i, step) for i in reversed(range(0, n+1, step))]
>>> from pprint import pprint
>>> pprint(result)
[range(0, 100, 10),
 range(0, 90, 10),
 range(0, 80, 10),
 range(0, 70, 10),
 range(0, 60, 10),
 range(0, 50, 10),
 range(0, 40, 10),
 range(0, 30, 10),
 range(0, 20, 10),
 range(0, 10, 10),
 range(0, 0, 10)]