Python无序范围?

时间:2013-05-15 03:02:16

标签: python loops range

而不是做

for i in range(begin, end):

我想做点什么

for i in begin+1, begin+2, begin, begin+3 through end:

如果这有意义吗?

2 个答案:

答案 0 :(得分:2)

for i in [begin+1, begin+2, begin] + range(begin+3, end):

答案 1 :(得分:0)

坦率地说,我认为这是itertools.chain的工作。

from itertools import chain
def disorderedrange(begin, end):
    return chain((begin+1, begin+2, begin, begin+3), range(begin+4, end))

for i in disorderedrange(1, 100):
    # loop content goes here.

如果范围很大,这比gnibbler的解决方案更好(因为这样可以避免创建一个包含整个范围的临时列表。)。