而不是做:
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)
如何以更 Pythonic 的方式创建具有递减序列的列表列表?
请您参考如下方法:
您可以通过简单的列表理解来做到这一点:
[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))
其中任何一个都非常好并且符合 pythonic。
或者,用一个简化的例子来演示:
>>> 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)]
