您的位置:首页 > 编程语言 > Python开发

Python基础第五节—循环

2020-07-02 21:52 78 查看

for循环和可迭代对象遍历

for 变量 in 可迭代对象:
循环体语句
可迭代对象包括:序列(字符串、元组、列表)、字典、迭代器对象(iterator)、生成器函数(generator)、文件对象。

字典的遍历

for x in d: 或 for x in d.keys(): #遍历字典中所有键
for x in d.values(): #遍历字典中所有值
for x in d.items(): 遍历字典中所有键值对

嵌套循环

生成九九乘法表:

for i in range(1,10):
for j in range(1,i+1):
print('{0}*{1}={2}'.format(i,j,i*j),end='\t')
print('\n')

break语句和continue语句

break语句可用于while和for循环,用于结束整个循环。
当有嵌套语句时,break只能跳出最近一层循环。
continue语句用于结束本次循环而进行下一次循环。
循环嵌套时,continue也只能跳出最近一层循环。

empNum=0
salarySum=0
salary=[]
while True:
s=input('请输入员工薪资(按Q或q结束) ')
if s.upper()=='Q':
print('录入完成,退出')
break
if float(s)<0:
print('输入有误!')
continue
empNum+=1
salarySum+=float(s)
salary.append(float(s))
print('员工数量:{0}'.format(empNum))
print('平均工资:{0}'.format(salarySum/empNum))

循环后附带的else语句

while、for循环可以附带一个else语句(可选),若循环没有被break终止,则执行else语句。否则不执行。

循环代码优化

三原则:
1.尽量减少循环内部不必要的运算;
2. 嵌套循环中,尽量减少内层循环的计算,尽量往外提;
3. 局部变量查询较快,尽量使用局部变量

例:

for i in range(1000):
result=[]
for m in range(10000):
result.append(i*1000+m*100)
for i in range(1000):
result=[]
c=i*1000
for m in range(10000):
result.append(c+m*100)

第二段代码效率优于第一段,因为第一段代码计算了1000万次i*1000,而第二段只计算了1000次。
由此可见,应尽量减少循环中的运算,尽量提到循环外面。

其他优化方法:
1.连接多个字符串,尽量使用join()而非+号;
2.列表进行元素插入和删除,尽量在列表尾部进行;

使用zip()进行并行迭代

for a,b,c in zip(alist,blist,clist):
循环次数为最短的list的长度

推导式创建序列

列表推导式:

cells=[(row,col) for row in range(5) for col in range(5)]
print(cells)

字典推导式:
{key_expression : value _expression for 表达式 in 可迭代对象}
和列表推导式相似,字典推导式也可加条件判断,也可有多个for循环。

#统计文本中字符出现的个数
my_test='Good night,miao'
d={c:my_test.count(c) for c in my_test}
print(d)

集合推导式:
与列表推导式的语法相似。
s={x*2 for x in range(10) if x%2==1}

生成器推导式(生成元组):
t=(x*2 for x in range(10) if x%2==1)生成的并非元组,而是生成器对象。
一个生成器只能运行一次,第一次迭代可以遍历得到数据,第二次迭代就得不到了,因为指针已指向末尾。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: