在 For 循环中迭代两个范围

新手上路,请多包涵

我有几个像这样的简单循环:

 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 同时迭代两个范围,但这不是我需要的。

有任何想法吗?

原文由 gdogg371 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

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

创建一个迭代器,返回第一个可迭代对象的元素,直到用尽,然后继续下一个可迭代对象,直到所有可迭代对象都用完。用于将连续序列视为单个序列。

例子:

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

对于蟒蛇 3

你可以一起循环进入两个范围

例子:

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

原文由 utdemir 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

原文由 Oleg K 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题