首页 > 解决方案 > 嵌套范围仅适用于最后一个范围

问题描述

这里绝对是初学者,所以如果某些术语使用不正确,我深表歉意。我试图同时运行多个范围,直到其中一个达到目标。我尝试嵌套它们,但发生的情况是只有最后一个范围朝着目标工作,而其他范围则停留在 1。为了澄清我希望 x1 打印出 3、6、9、12..,x2 打印出 2, 4,6,8.. 和 x3 打印出 1,2,3,4... 而 x1 和 x2 仅打印 1,1,1,1... 并且只有 x3 正确打印为 1,2,3 ,4,...

range1 = (range(0, 100000000000000000000, 3))
range2 = (range(0, 100000000000000000000, 2))
range3 = (range(0, 100000000000000000000, 1))
for x1 in range1:
    for x2 in range2:
        for x3 in range3:

            if x1 == 1358445000:
                print ("x1=", x1)
                break
            if x2 == 1358445000:
                print ("x2=", x2)
                break
            if x3 == 1358445000:
                print ("x3=", x3)
                break

            else:
                print (x1)
                print (x2)
                print (x3)

标签: pythonpython-3.xif-statementnestedrange

解决方案


zip将有助于解决您的问题:

range1 = range(0, 100000000000000000000, 3)
range2 = range(0, 100000000000000000000, 2)
range3 = range(0, 100000000000000000000, 1)


for x1, x2, x3 in zip(range1, range2, range3):
    if x1 == 1358445000:
        print("x1=", x1)
        break
    if x2 == 1358445000:
        print("x2=", x2)
        break
    if x3 == 1358445000:
        print("x3=", x3)
        break
    else:
        print(x1)
        print(x2)
        print(x3)

请注意, zip 迭代将在最短的迭代处停止。您可能还想zip_longestitertools包中查看。


推荐阅读