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)
来表示
不过这个是一个特殊的情况,如果i,j值不同的话,我们只能使用zip()函数来达到同上面c语言同样的目的。
附:python多个变量的for循环
当for循环有两个需要迭代的对象时,要用zip对这多个变量封装,否则会报错“too many values to unpack”
错误的例子:
starts = [0,1,2,3,4]
ends = [5,6,7,8,9]
for start, end in starts, ends:
print((start, end))正确的例子:
starts = [0,1,2,3,4]
ends = [5,6,7,8,9]
for start, end in zip(starts, ends):
print((start, end))总结
到此这篇关于Python如何在for循环中同时使用两个变量与两个控制条件的文章就介绍到这了,更多相关Python for循环同时用两个变量和控制条件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python VisPy库高性能科学可视化图形处理用法实例探究
VisPy是一个用于高性能科学可视化的Python库,它建立在现代图形处理单元(GPU)上,旨在提供流畅、交互式的数据可视化体验,本文将深入探讨VisPy的基本概念、核心特性以及实际应用场景,并通过丰富的示例代码演示其强大的可视化能力2023-12-12
Python数据可视化实践之使用Matplotlib绘制图表
数据可视化是数据分析的重要环节,通过将数据转化为图形,可以更直观地展示数据特征和规律。Python中的Matplotlib库是一个强大的数据可视化工具,本文将带您了解Matplotlib的基本使用方法,以及如何绘制常见的图表2023-05-05
卸载tensorflow-cpu重装tensorflow-gpu操作
这篇文章主要介绍了卸载tensorflow-cpu重装tensorflow-gpu操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-06-06
python使用time、datetime返回工作日列表实例代码
这篇文章主要介绍了python使用time、datetime返回工作日列表,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-05-05


最新评论