Skip to main content
 首页 » 编程设计

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

2025年05月04日22tintown

而不是做:

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)]