而不是做
for i in range(begin, end):
我想做类似的事情
for i in begin+1, begin+2, begin, begin+3 through end:
如果这有意义吗?
for i in [begin+1, begin+2, begin] + range(begin+3, end):
坦率地说,我认为这是一份工作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 的解决方案要好(因为这样可以避免创建一个包含整个范围的临时列表。)。