如何合并range()函数

发布于 2021-01-29 14:58:07

对于我正在编写的某些代码,我需要从1到20跳过6进行迭代。

a = range(1,6)
b = range(7,31)

for i in a+b:
    print i

有没有办法更有效地做到这一点?

关注者
0
被浏览
101
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在python
    2中,您没有合并“范围函数”;这些只是列表。您的示例效果很好。但是range总是在内存中创建一个完整列表,因此,如果仅在for循环中需要,一种更好的方法是使用生成器表达式和xrange:

    range_with_holes = (j for j in xrange(1, 31) if j != 6)
    
    for i in range_with_holes:
        ....
    

    在生成器表达式中,if部分可以包含要跳过数字的复杂逻辑。

    组合可迭代对象的另一种方法是使用itertools.chain

    range_with_holes = itertools.chain(xrange(1, 6), xrange(7, 31))
    

    或者只是跳过不需要的索引

    for i in range(1, 31):
        if i == 6:
            continue
    
        ...
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看