Python中如何在for循环中同时使用两个变量和两个控制条件

在Python中,可以使用zip()函数在for循环中同时处理两个变量,例如在输出矩阵对角线元素的坐标时。通过zip(range(n),range(n)),可以实现类似C语言中i和j同时递增的效果,打印出i,j的对应值。
摘要由CSDN通过智能技术生成

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语言同样的目的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值