代码循环和推导式

python数据分析学习笔记

第五节

一、break语句

break 语句可用于 while 和 for 循环,用来结束整个循环。当有嵌套循环时,break 语句只 能跳出最近一层的循环。

使用break语句结束循环【具体代码】

while True:
	a = input("输入一个字符(q或Q)")
	if a.upper()=='Q':
		print("结束 退出")
		break
	else:
		print(a)

二、continue 语句

continue 语句用于结束本次循环,继续下一次。多个循环嵌套时,continue 也是应用于最 近的一层循环。

例:入员工的薪资,若薪资小于 0 则重新输入。最后打印出录入员工的数量和 薪资明细,以及平均薪资【具体代码】

empNum = 0
salarySum = 0
salarys = []
while Ture:
	a = input("输入员工工资(q或Q)")
	if a.upper()=='Q'
		print("结束 退出")
		break
	if float(a)<0:
		continue
	empNew += 1
	salarys.append(float(a))
	salarySum += float(a)
print("员工工资{0}.format(empNew)")
print("录入薪资",salarys)
print("平均薪资{0}.format(salarySum/empNum)")

三、else 语句

while、for 循环可以附带一个 else 语句(可选)。如果 for、while 语句没有被 break 语句 结束,则会执行 else 子句,否则不执行。
语法格式为:
while 条件表达式:
循环体
else:
语句块
或者:
for 变量 in 可迭代对象:
循环体
else:
语句块

例:员工一共 4 人。录入这 4 位员工的薪资。全部录入后,打印提示“您已经全部录 入 4 名员工的薪资”。最后,打印输出录入的薪资和平均薪资【具体代码】

alarySum= 0
salarys = [] 
for i in range(4): 
	a = input("请输入一共 4 名员工的薪资(按 Q 或 q 中途结束)") 
	if a.upper()=='Q':
		print("录入完成,退出") 
		break 
	if float(s)<0: 	
		continue 
		salarys.append(float(s)) 
		salarySum += float(s) 
	else:
print("您已经全部录入 4 名员工的薪资") 
print("录入薪资:",salarys)
print("平均薪资{0}".format(salarySum/4))

四、代码循环优化(重点)

循环代码优化遵守以下三点:

  1. 减少内部没有必要的计算
  2. 嵌套循环里,减少内部循环,尽量在外部循环
  3. 局部变量查询快,尽量使用局部变量
    其他优化:
  4. 连接多个字符串,使用 join()而不使用+
  5. 列表进行元素插入和删除,尽量在列表尾部操作

五、使用 zip()并行迭代

zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。

测试zip并行迭代【具体代码】

names = ("喝一壶","老王","老五","老董") 
ages = (18,16,20,25) 
jobs = ("一壶","一壶","一壶")
for name,age,job in zip(names,ages,jobs):
	 print("{0}--{1}--{2}".format(name,age,job))

六、推导式(重点)

1、列表推到式

列表推导式生成列表对象的语法:
[表达式 for item in 可迭代对象 ]
或者:{表达式 for item in 可迭代对象 if 条件判断}

例:统计文本出现字符的次数

>>> [x for x in range(1,5)] 
[1, 2, 3, 4] 
>>> [x*2 for x in range(1,5)]
 [2, 4, 6, 8] 
>>> [x*2 for x in range(1,20) if x%5==0 ] 
[10, 20, 30] 
>>> [a for a in "abcdefg"] 
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> cells = [(row,col) for row in range(1,10) for col in range(1,10)] #可以使用两个循环
>>> for cell in cells:
	print(cell)
2、字典推导式

字典的推导式生成字典对象的语法:
{key_expression : value_expression for 表达式 in 可迭代对象}

>>> my_text = ' i love you, i love sxt, i love gaoqi' 
>>> char_count = {c:my_text.count(c) for c in my_text} 
>>> char_count {' ': 9, 'i': 4, 'l': 3, 'o': 5, 'v': 3, 'e': 3, 'y': 1, 'u': 1, ',': 2, 's': 1, 'x': 1, 't': 1, 'g': 1, 'a': 1, 'q': 1}
3、集合推导式

集合推导式生成集合,和列表推导式的语法格式类似:
{表达式 for item in 可迭代对象 }
或者:{表达式 for item in 可迭代对象 if 条件判断}
字典推导也可以增加 if 条件判断、多个 for 循环。

>>> {x for x in range(1,100) if x%9==0} {99, 36, 72, 9, 45, 81, 18, 54, 90, 27, 63}
4、生成器推导式(生成元组)

元组没有推导式,元组是一个生成器对象,所以它没有。
因为,只要是生成器它就只能运行一次,第一次发生迭代可以得到数据,如果发生了第二次就不会产生数据了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值