Skip to main content
 首页 » 编程设计

Python,循环遍历范围内的列表

2025年05月04日17shangdawei

我有一个值为 0 到 30 的列表。

我如何循环遍历这些值(在一个范围内)并添加偏移量?

因为这可能没有任何意义,我画了一个小图:

diagram

请您参考如下方法:

这处理环绕情况

def list_range(offset, length, l): 
    # this handles both negative offsets and offsets larger than list length 
    start = offset % len(l) 
    end = (start + length) % len(l) 
    if end > start: 
        return l[start:end] 
    return l[start:] + l[:end] 

编辑:我们现在处理负索引情况。

编辑 2:交互式 shell 中的示例用法。

>>> l = range(30) 
>>> list_range(15,10,l) 
[15, 16, 17, 18, 19, 20, 21, 22, 23, 24] 
>>> list_range(25,10,l) # I'm guessing the 35 in the example was accidental 
[25, 26, 27, 28, 29, 0, 1, 2, 3, 4] 
>>> list_range(-8,10,l) 
[12, 13, 14, 15, 16, 17, 18, 19, 20, 21] 

编辑 3:更新为忽略每个评论的 -8,10 大小写

编辑 4:我正在使用列表切片,因为我怀疑它们比循环数据更有效。我刚刚对此进行了测试,我的预感是正确的,它比循环列表的 mVChr 版本快大约 2 倍。然而,这可能是一个过早的优化,更多的 pythonic 答案(列表理解单行)在你的情况下可能更好