十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
for ... in ...
创新互联主营文山州网站建设的网络公司,主营网站建设方案,手机APP定制开发,文山州h5重庆小程序开发搭建,文山州网站营销推广欢迎文山州等地区企业咨询
// for ... in 字符串
for i in 'abc':
print(i)
'''
a
b
c
'''
// for ... in 数组
for i in ['a', 'b', 'c']:
print(i)
'''
a
b
c
'''
// for ... in 元组
for i in ('a', 'b', 'c'):
print(i)
'''
a
b
c
'''
// for ... in 字典(得到的是字典的key)
for k in {'学号':30,'姓名':'小明'}:
print(k)
'''
姓名
学号
'''
// for ... in 字典.items()(得到的是字典的key, value)
for k, v in {'学号':30,'姓名':'小明'}.items():
print(k, v)
'''
姓名 小明
学号 30
'''
for ... in range(...)
// for ... in range(num)
for i in range(3):
print(i)
'''
1
2
'''
// for ... in range(num1, num2)
for i in range(1, 3):
print(i)
'''
1
2
'''
// for ... in range(num1, num2, num3)
for i in range(3, 1, -1):
print(i)
'''
3
2
'''
for i in range(1, 5, 2):
print(i)
'''
1
3
'''
倒叙
for i in reversed([1,2,3,4]):
print(i)
’‘’
4
3
2
1
‘’‘
又想得到遍历次数,又想得到数组值
for i,e in enumerate(array):
for i,e in enumerate(['21dw', 55, 22, 'rw']):
print(i, e)
'''
0 21dw
1 55
2 22
3 rw
'''
列表生成式
[...for ... in array]]
print([x * x for x in [2, 34, 324, 43]])
'''
[4, 1156, 104976, 1849]
'''
//相当于
list = []
for x in [2, 34, 324, 43]:
list.append(x * x)
print(list)
首先来说下for循环,for循环是python语言的循环控制语句,for循环可以遍历任何序列的项目,包括序列集合或可迭代对象,如列表、字符串、元组、字典等。
看下基本语法:
for 变量 in 序列: #变量为任意值,序列为列表、元组、字符串等
子代码模块
复制
比如我们想从一个列表中打印出来每个值,就可以用到for循环:
for i in (1,2,3,"test"): #遍历列表里的所有值,并把值赋值给变量 i
print(i) #输出结果为:1 2 3 test
#每次只输出一个,因为for循环是遍历列表里的所有值,每遍历一次就输出一个值,然后遍历第二次,当遍历第二次时,变量i的值也会发生变化
复制
第一次循环:从列表中读取到 1 ,把1值赋值给变量 i ,然后进入到子代码中,此时 i 的值为 1,打印出 1 ,然后结束本次for循环,判断列表中还有其他值,开始第二次循环
第二次循环:从列表中读取到 2 ,把2值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 2,打印出2,然后结束本次for循环,判断列表中还有其他值,开始第三次循环
第三次循环:从列表中读取到 3 ,把3值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 3,打印出3,然后结束本次for循环,判断列表中还有其他值,开始第四次循环
第四次循环:从列表中读取到 test ,把test值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 "test",打印出 "test",判断列表中没有值了,结束本次遍历
最后输出的值为:1
2
3
test
如果我们把print(i)加到for循环外,此时打印的结果是什么呢?
for i in (1,2,3,"test"): #遍历列表里的所有值,并把值赋值给变量 i
print(i) #打印每次循环的值
print(i) #因为最后一次遍历的值为“test”,所以最后输出的值为 test
复制
最后按个print(i)输出的值为:test
输出的值为:1
2
3
test #上面是for循环每次遍历得到的结果
test #这个是for循环外,打印i得到的结果
如果我们遍历一个字符串是什么样子呢?
for i in ("Atom"): #遍历字符串里的所有值,并把值赋值给变量 i
print(i) #打印的结果为:A
t
o
m
复制
打印出的结果为:A
t
o
m
遍历一个字符串,会把字符串的每个字符都遍历出来
第一次循环:从字符串中读取到 A ,把A值赋值给变量 i ,然后进入到子代码中,此时 i 值为 A,印出 A ,然后结束本次for循环,判断字符串中还有其他值,开始第二次循环
第二次循环:从字符串中读取到 t ,把t值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 t,打印出t,然后结束本次for循环,判断字符串中还有其他值,开始第三次循环
第三次循环:从字符串中读取到 o ,把o值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 o,打印出o,然后结束本次for循环,判断字符串中还有其他值,开始第四次循环
第四次循环:从字符串中读取到 m ,把m值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 m,打印出 m,判断字符串中没有值了,结束本次遍历
现在我们用下range()函数
先说下rang()函数,rang()函数可以创建一个整数列表
range(3)就表示创建一个整数列表(0,1,2) range(5)表示创建一个整数列表(0,1,2,3,4)
for i in range(3): #创建一个整数列表(0,1,2),然后遍历列表里的所有值,并把值赋值给变量 i
print(i) #打印结果为:0
1
2
复制
打印结果为:0
1
2
最后来个for循环和if判断相结合的一个例子:
有一个列表(0,1,2,3),我们想取出列表中小于2的数字,应该怎么办?
这时候就可以先用for循环取出,列表里的每个值,然后再用if判断是否小于2,如果满足就打印出来,如果不满足结束本次循环,再去取第二个值:
for i in range(4): #创建一个列表(0,1,2,3),然后遍历列表中的每个值,赋值给i
if i 2: #得到列表中的每个值后,去进行判断,如果满足i 2,就打印出i的值
print(i) #输出的结果为:0 1
复制
第一次循环:从列表中读取到 0 ,把0赋值给变量 i ,然后进入for循环的子代码中,此时 i 的值为 0,然后去进行if判断,i 2成立,进入到if子代码中,打印出i的值为0 ,结束本次if循环,然后结束本次for循环,判断列表中还有其他值,开始第二次for循环
第二次循环:从列表中读取到 1 ,把1赋值给变量 i ,然后进入for循环的子代码中,此时 i 的值为 1,然后去进行if判断,i 2成立,进入到if子代码中,打印出i的值为1 ,结束本次if循环,然后结束本次for循环,判断列表中还有其他值,开始第三次for循环
第三次循环:从列表中读取到 2 ,把2赋值给变量 i ,然后进入for循环的子代码中,此时 i 的值为 2,然后去进行if判断,i 2不成立,不进入if子代码中,结束本次if循环,然后结束本次for循环,判断列表中还有其他值,开始第四次for循环
第四次循环:从列表中读取到 3 ,把3赋值给变量 i ,然后进入for循环的子代码中,此时 i 的值为 3,然后去进行if判断,i 2成立,不进入if子代码中,结束本次if循环,然后结束本次for循环,判断列表中没有其他值了,结束本次遍历
总结下for循环就是,去一个个取出序列中的所有值,然后用每个值去进行for循环子代码下的运算,当结束for循环下子代码的运算后,再去判断序列中还有没有其他值,如果存在,再去把值取出,去进行for循环下子代码的运算,直到序列中的所有值,都进行过for循环子代码的运算,然后结束for循环
for(a;b;c) a为初始化条件,b为判断条件,成立就进行for里面的,不成立直接退出。 c为条件变化。abc三个语句之间为分号,可以为空语句,即不加任何信息。 b为判断是否进行的依据,一般不要省,要不然会永远循环下去。 举个例子: for(;;)永远运行 for(;a100;){a++;}a长到100的时候就会退出for循环了,只有中间加了,前面后面得语句随意,但目的是要for有开始也有结束,如下面两种情况 for(int i = 0; i100; i++)循环100次 int i=0; for(;i100;){i++;}也是循环100次