如何解决在python中循环多个变量并非所有变量都是有限的甚至是已知的序列
如果不是所有变量都是已知或有限序列,如何在python中循环多个变量?
换句话说,如何在 python 中创建与此 C++ 代码类似的代码?
<!DOCTYPE html>
<html lang="en">
<head>
<Meta charset="UTF-8">
<Meta http-equiv="X-UA-Compatible" content="IE=edge">
<Meta name="viewport" content="width=device-width,initial-scale=1.0">
</head>
<body>
<div class="btn-container">
<button class="btn-container__left btn-container__left--selected">Fixed Offset</button>
<button class="btn-container__right"> Linear Drift</button>
</div>
</body>
</html>
在这个例子中,x 边界是明确定义的。但是,y 和 z 不是。
解决方法
我通过结合 Python 中的 2 个功能来做到这一点:内置函数 zip()
和 generator functions
。
我首先定义了一个生成器 increment_by(base,addon)
如下:
def increment_by(base,addon):
while True:
yield base
base += addon
然后我将它与其他生成器/序列一起传递给 zip 函数。 最后我循环 zip() 的下一个值。
注意序列生成器之一应该是有限的,否则,您的应用程序可能会崩溃。
y,z,dz = 7,3,5
print('==>',y,z)
for x,z in zip(range(20),increment_by(y,1),increment_by(z,dz)):
print(x,z)
print()
print('==>',z)
输出是
==> 7 3
0 7 3
1 8 8
2 9 13
3 10 18
4 11 23
5 12 28
6 13 33
7 14 38
8 15 43
9 16 48
10 17 53
11 18 58
12 19 63
13 20 68
14 21 73
15 22 78
16 23 83
17 24 88
18 25 93
19 26 98
==> 26 98
这里的好处是,通过在 in
运算符之前使用相同的变量名称,我可以在循环内和循环后使用相同的变量值。这是可能的,因为解释器获取生成器对象,对其调用 next()
,并以适合分配给任何变量(包括原始变量本身)的方式返回产生的值。因此,使用原始变量将使其值在每次迭代时更新,并在循环外保持更新。
更新: 正如@Iain Shelvington 所提到的,有一个内置生成器函数 (itertools.count(start=0,step=1)
) 执行完全相同的功能,并且它采用与 {{ 相同顺序的相同参数1}}。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。