在For循环中迭代两个范围

时间:2015-06-21 12:21:54

标签: python

我有几个简单的循环:

for i in range (30, 52):

    #do some stuff here

for i in range (1, 18):

    #do some more stuff

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

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

    #do some stuff

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

有什么想法吗?

3 个答案:

答案 0 :(得分:13)

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

  

创建一个迭代器,返回第一个iterable中的元素,直到   它耗尽,然后进入下一个迭代,直到所有的   迭代用尽了。用于处理连续序列   单一序列。

示例:

import itertools as it
for i in it.chain(range(30, 52), range(1, 18)):
    print(i)

答案 1 :(得分:2)

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

for i in list(range(30, 52)) + list(range(1, 18)):
    # something

答案 2 :(得分:-1)

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