在For循环中迭代两个范围

gdo*_*371 8 python

我有几个简单的循环,如下所示:

for i in range (30, 52):

    #do some stuff here

for i in range (1, 18):

    #do some more stuff
Run Code Online (Sandbox Code Playgroud)

我想要的是使用顺序语法将它压缩成一个循环:

for i in range((30, 52), (1, 18):

    #do some stuff
Run Code Online (Sandbox Code Playgroud)

我意识到语法不起作用,但这是我需要的基本概念.我见过人们使用zip来同时迭代两个范围,但这不是我需要的.

有任何想法吗?

utd*_*mir 15

来自https://docs.python.org/2/library/itertools.html#itertools.chain:

创建一个迭代器,它返回第一个iterable中的元素,直到它耗尽,然后进入下一个iterable,直到所有的iterables都用完为止.用于将连续序列作为单个序列处理.

例:

import itertools as it
for i in it.chain(range(30, 52), range(1, 18)):
    print(i)
Run Code Online (Sandbox Code Playgroud)


小智 9

您可以将范围的两个迭代器转换为列表,然后将它们与加法结合起来:

for i in list(range(30, 52)) + list(range(1, 18)):
    # something
Run Code Online (Sandbox Code Playgroud)