当前位置:
首页 > Python基础教程 >
-
Python如何在for循环中同时使用两个变量与两个控制条件
Python是一种广泛使用的编程语言,其提供了许多强大的方法来处理代码,Python for循环是其中一种非常有用的方法,下面这篇文章主要给大家介绍了关于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循环同时用两个变量和控制条件内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://blog.csdn.net/L_1900/article/details/128882303
栏目列表
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
开启SQLSERVER数据库缓存依赖优化网站性能
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比