python - 在循环中运行 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)。
解决方案
您可以izip_longest
在 python2 和zip_longest
python3 中使用。
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
推荐阅读
- git - 如何将 AzureDevops 上的访问限制为只能访问一个 git-branch
- php - 如何用复合材料遮盖图像,但仅在颜色为黑色的情况下
- c++ - 使用事务内存时的段错误,尝试实现golang的chan模拟
- tsql - 批处理文件不执行 psftp 命令
- c# - C# ListView 标签实现 MySql 删除
- c# - ICollectionView 过滤时性能很差
- unix - 使用 sed 或 awk 在单行中打印多个键值对
- c# - 使用 Azure Function v2 自定义 Application Insight TelemetryInitializer
- java - JNA 参数问题:无效的内存访问
- spring-data - Spring Data ReactiveCrudRepository 保存操作未在 Postgres 数据库中持久保存数据