Python中如何在for循环中同时使用两个变量和两个控制条件
在C语言中常常遇到for循环使用两个变亮和两个控制条件的情况,比如我要输出矩阵对角线元素的坐标时
例如输出:
0,0
1,1
2,2
3,3
...
在C语言中,我们会这样使用for循环来输出
for(i=0,j=0;i<n,j<n;i++,j++){
printf(i,j)
printf("\n")
}
在python中如何使用for循环达到类似于上面c语言的这样的结果呢?
一开始很多人不假思索的就直接敲下如下的代码
for i in range(n):
for j in range(n):
很明显,这样的逻辑是不对的,因为我们要求在一个for循环内满足两个控制条件,如果按照上面代码的逻辑,就是遍历完一次j的值,i才会+1,和上面每一次i,j的值同时加一相违背。
这里就可以用python中的zip()
函数。
先来直观看一下zip()函数的作用
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # 返回一个对象
zipped
<zip object at 0x103abc288>
>>> list(zipped) # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c)) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
故可以改为
for i,j in zip(range(n),range(n)):
print(i,j)
输出结果同上.
有些人可能疑惑这里也可以用
for i in range(n):
print(i,i)
来表示文章来源:https://www.toymoban.com/news/detail-819651.html
不过这个是一个特殊的情况,如果i,j值不同的话,我们只能使用zip()
函数来达到同上面c语言同样的目的。文章来源地址https://www.toymoban.com/news/detail-819651.html
到了这里,关于Python中如何在for循环中同时使用两个变量和两个控制条件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!