循环语句,那些Python编程必不可少的技能,吐血整理
带你走进 @ 机器人时代
Discover 点击上面蓝色文字,关注我们
Python循环中其实就是两种循环命令,看起来简单,要用好得要仔细研究一下,我们来看看第一种while循环的使用:
# while循环的用法
n = 1
# 当 n 小于5时会一直循环
while n <= 5 :
print("n=", n)
n += 1
print("循环结束!")
运行结果:
n= 1
n= 2
n= 3
n= 4
n= 5
循环结束!
看起来是不是很简单?我们再来看看另外一种循环:
#for循环的用法
for i in (1,2,3,4,5):
print(i)
运行结果:
1
2
3
4
5
是不是秒懂?
有时候,看起来越简单的东西功能越强大,我们来看看更多的应用:
a=0
for i in range(101):
a+=i
print('1+2+...+100的结果是: ',a)
运行结果:
1+2+...+100的结果是: 5050
Python为我们提供了一种功能更加强大的写法,如果我们想逐行打印1-5的平方:
[print(i*i) for i in range(1,6)]
运行结果:
1
4
9
16
25
一行代码搞定!这就是Python比较强大的列表推导式,它同样支持双重循环:
#简化前的写法:
d = []
for x in range(3):
for y in range(2):
d.append((x, y))
print('未简化的程序输出:')
print(d)
#简化后的写法:
print('列表推导式的输出:')
print([(x,y) for x in range(3) for y in range(2)])
运行结果:
未简化的程序输出:
[(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]
列表推导式的输出:
[(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]
看起来是不是很高级?还可以加入if语句,我们来看一个例子:
#将可以整除的数字配对
s= [30, 12, 66, 34, 39, 78, 36, 57, 121]
b = [3, 5, 7, 11]
# 只要y能整除x,就将它们配对在一起
r = [(x, y) for x in b for y in s if y % x == 0]
print(r)
运行结果:
[(3, 30), (3, 12), (3, 66), (3, 39), (3, 78), (3, 36), (3, 57), (5, 30), (11, 66), (11, 121)]
如果采用传统的写法是这样的:
#将可以整除的数字配对
s= [30, 12, 66, 34, 39, 78, 36, 57, 121]
b = [3, 5, 7, 11]
r=[]
for x in b:
for y in s:
# 只要y能整除x,就将它们配对在一起
if y%x==0:
r.append((x,y))
print(r)
运行结果:
[(3, 30), (3, 12), (3, 66), (3, 39), (3, 78), (3, 36), (3, 57), (5, 30), (11, 66), (11, 121)]
可以看出,列表推导式是一种非常先进的写法。
那么,for循环如何遍历字典呢?我们来看看:
#遍历字典
d={'张三': 11, '李四': 12, '王五': 13}
n = {print(x,y) for x,y in d.items()}
运行结果:
张三 11
李四 12
王五 13
这里可以看出,遍历字典的时候,我们需要两个变量,一个用来读取键,另一个用来读取键值。当然根据需要,也可以只读取其中一项。
值得注意的是,我们可以使用while和for来进行嵌套实现某些功能:
#循环嵌套
i = 0
while i<3:
[print("i=",i," j=",j) for j in range(2)]
i=i+1
运行结果:
i= 0 j= 0
i= 0 j= 1
i= 1 j= 0
i= 1 j= 1
i= 2 j= 0
i= 2 j= 1
在计算机编程中,有一种重要的算法,叫冒泡排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。
我们来看一段代码,利用双重循环来实现冒泡排序的效果:
#实现冒泡排序
n = [2,4,1,3]
for i in range(len(n)-1):
for j in range(len(n)-i-1):
if(n[j]>n[j+1]):
#两个元素比较,根据结果交换
n[j],n[j+1] = n[j+1],n[j]
print("排序后:",n)
运行结果:
排序后:[1, 2, 3, 4]
在编写循环代码的过程中,难免会遇到不小心弄成死循环的局面。
虽然在调试的过程中,可以使用‘Ctrl+C’来中断程序运行,但正式发布时会造成程序的崩溃,因此,我们需要在适当的地方跳出循环,或者跳出进行下一次循环。
我们来看看break命令与continue命令的使用方法:
#将两个网址逐行打印,遇到$符号就中止
a = "https://www.baidu.com/,https://www.toutiao.com$这句话不要"
# 一个简单的for循环
for i in a:
if i == ',' :
# 碰到逗号换行,跳转到下一次循环
print('\n下一个网址:')
continue
if i=='#39;:
#碰到$符号直接跳出循环
break
print(i,end="")
运行结果:
https://www.baidu.com/
下一个网址:
https://www.toutiao.com
最后,我们来看一下在循环流程中经常会配合使用的几个功能强大的函数:zip函数、reversed函数、sorted函数的应用。
我们先来看一下zip()函数:
c = {1:'a',2:'b',3:'c'}
[print(i)for i in zip(c)]
运行结果:
(1,)
(2,)
(3,)
c = {1:'a',2:'b',3:'c'}
# [print(i)for i in zip(c)]
a={'张三','李四','王五'}
print([x for x in zip(c,a)])
运行结果:
[(1, '李四'), (2, '张三'), (3, '王五')]
可以看出,在使用 zip() 函数“压缩”多个序列时,它会分别取各序列中第 1 个元素、第 2 个元素、... 第 n 个元素,各自组成新的元组。
需要注意的是,当多个序列中元素个数不一致时,会以最短的序列为准进行压缩。
reversed函数:说简单点就是可以返回一个逆序排序的迭代器:
print([i for i in reversed([5,4,3,2,1])])
运行结果:
[5, 4, 3, 2, 1]
sorted函数:是一个可以生成排序的列表的功能:
print([i for i in sorted([5,2,3,4,1],reverse=False)])
print([i for i in sorted([9,6,8,5,7],reverse=True)])
运行结果如下:
[1, 2, 3, 4, 5]
[9, 8, 7, 6, 5]
可以看出:reverse参数决定了排序的方式。
坚持学习,每天都能进步一点点!!
往期回顾:
- 来来来,送你一个金牌销售机器人,7X24小时不休,不要工资免费用!
- RPA技术在旅行社销售业务中如何凤凰涅槃??
- 【工资翻三倍】系列:一招搞定九宫图片切割机器人,让你的朋友圈更加炫酷!
本文引用和摘录相关内容,请联系侵删。
- END -
最后,文章有帮助到你的话【点赞在看】
激励我们分享更多的干货!