首页 > 解决方案 > 在循环中运行 2 个变量,其中 1 的值较大

问题描述

如何在我需要 2 个变量的范围内运行循环,其中 1 个变量的值大于其他变量。例如

x = 3
y = 4

for x_val, y_val in zip(range(x), range(y)):
    print(x_val)
    print(y_val)

y想跑 4 次而不是停在 3,因为 x 值为 3。

注意 - 这是我需要的东西的简化示例。我知道我们可以只打印 x_val 而不需要 y_val。但我想要基于不同函数的循环变量有 2 个变量(x_val,y_val)。

标签: pythonpython-3.xziprange

解决方案


您可以izip_longest在 python2 和zip_longestpython3 中使用。

from itertools import zip_longest
x = 3
y = 7

for x_val, y_val in zip_longest(range(x), range(y),fillvalue=' '):
    print(x_val)
    print(y_val)

如果可迭代的长度不均匀,则用 fillvalue 填充缺失值。迭代一直持续到最长的可迭代对象用完为止。

编辑:

fillvalue成为最大可迭代的最后一个值。

x=3
y=4
for x,y in zip_longest(range(x),range(y),fillvalue=range(x)[-1] if x>y else range(y)[-1]):
    print(x,y)

输出:

0 0
1 1
2 2
6 3
6 4
6 5
6 6

推荐阅读