python中的for循环是一个通用的序列迭代器,可以遍历任意有序序列对象内部的元素(注意是遍历),也就是说从一开始就固定循环方式,本质上就是遍历。
python:代码
count = 0for i in range(8): if i % 2 == 0:
i += 2 print(i, end=' ')
count += 1print('\n总次数',count)
返回结果
2 1 4 3 6 5 8 7
总次数 8
我的初衷是让这个程序遇到偶数就跳两下。很明显,执行了八次
而c++代码就可以用for实现这个功能:
for(int i = 1; i<=8;i++)
{
if(i%2==0){
i += 2;
}
cout<<i<<' ';
}
结果为
1 4 5 8
python里要简单的实现上述功能,则需要用while了。
总结: 里的 只是对一个有序序列的遍历
深层次原因:
python中的for循环本质上是一个迭代器。迭代器工作在一个独立的线程中,具有互斥(互斥)锁,即只有一个进程可以访问这个可迭代对象。
当创建迭代器时,在本例中,它会生成一个指向可迭代对象的内存中索引表,在本例中为 range(8)。当i改变时,由于有互斥锁,索引表的内容不会同步改变。也可以说这不是那个。
但是如果是引用的话,是没有问题的,也很容易理解。比如循环打印print(i+2)就可以了。参考仍然是
当然python中的循环也是可以改变循环次数的,关键就在于这句话——这个迭代器创建的内存索引表指向一个可迭代对象。
我们来看看列表,例如
a= [1,2,3,4]
这个a列表本质上是对a[0]、a[1]、a[2]、a[4]的引用,由于列表本身是一个可迭代对象,我们把这个列表(可迭代对象)的内部引用改成
count = 0
for i in a:
a[1:] = [1]
count += 1
print(count)
count 的结果为2
而上面的\color{red}{range}我们没办法去操作它的内部操作,第一个i是一个一个的去内存索引表中查找,第二个i是一个新的对象
对于列表,我们直接改变了可迭代对象的结构,也就是说内存索引表本身发生了变化。
while
Python中的while循环,满足条件就一直执行,不满足就停止
例如
while True:
print(1)
上面例子就是一个死循环。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 什么是 Python 集合参数?01/01
- ♥ python中引发raise异常的注意事项11/16
- ♥ Python3 枚举类比较的局限性是什么?12/22
- ♥ 如何用 Python 编写网页?10/08
- ♥ python中的str()函数转换字符串09/30
- ♥ python中yaml的三种数据结构12/19
内容反馈