如何在Python3中将range(0,10)转为[[0,5],[6,10]]格式的嵌套列表?
解决方案
修正后的列表推导式
你可以通过在列表推导式中加入条件判断,区分第一个和第二个子列表的起始值,来得到预期结果:
list_com = [[x, x + 5] if idx == 0 else [x + 1, x + 6] for idx, x in enumerate(range(0, 10, 5))]
执行后结果为:[[0, 5], [6, 10]]
更简洁的实现方式
如果你的需求是固定将range(0,10)分割为[[0,5],[6,10]],可以直接指定起始点生成列表,代码更直观:
list_com = [[s, s + 5] for s in [0, 6]]
这种方式避免了循环中的条件判断,逻辑更清晰。
通用场景扩展
如果需要处理类似的区间分割(比如将range(0, N)按步长step分割,且后续区间起始为前一区间结束+1),可以用以下通用写法:
step = 5 total = 10 # 生成起始点列表 starts = [0] + [step + 1 + i * step for i in range(1, total // step)] list_com = [[s, s + step] for s in starts]
当total=10、step=5时,同样会得到[[0,5],[6,10]]。
内容的提问来源于stack exchange,提问作者Nawendu Singh
相关产品推荐
相关产品推荐

