目录
for循环与可迭代对象遍历
可迭代对象
range对象
嵌套循环
九九乘法表
打印表格数据
break语句
continue语句
循环里面的else
循环代码优化(非常重要!)
zip()并行迭代
推导式创建序列
列表推导式
字典推导式
集合推导式
生成器推导式(生成元组)
for循环与可迭代对象遍历
可迭代对象
1.序列:字符串、列表、元组
2.字典
3.迭代器对象(iterator)
4.生成器对象(generator)
5.文件对象
s={'name':'gao','age':18,'job':'programmer'}
for i in s:
print(i)
for i in s.keys():
print(i)
for i in s.items():
print(i)
for i in s.values():
print(i)
range对象
range(start,end,step)
嵌套循环
for x in range(5):
for y in range(5):
print(x,end="t")
print()
九九乘法表
for m in range(1,10,1):
for n in range(1,10,1):
if m>=n:
print("{0}*{1}={2}".format(m,n,m*n),end="t")
print()
for m in range(1,10,1):
for n in range(1,m+1):
print("{0}*{1}={2}".format(m,n,m*n),end="t")
print()
打印表格数据
r1={"name":"高小一","age":18,"salary":30000,"city":"北京"}
r2={"name":"高小2","age":19,"salary":20000,"city":"上海"}
r3={"name":"高小3","age":20,"salary":10000,"city":"南京"}
tb=[r1,r2,r3]
print(tb[1].get("salary"))
for i in tb:
if i.get("salary")>15000:
print(i.get("name"),i.get("age"),i.get("salary"),i.get("city"))
break语句
for m in range(1,10,1):
for n in range(1,10,1):
if m>=n:
print("{0}*{1}={2}".format(m,n,m*n),end="t")
print()
for m in range(1,10,1):
for n in range(1,m+1):
print("{0}*{1}={2}".format(m,n,m*n),end="t")
print()
打印表格数据
r1={"name":"高小一","age":18,"salary":30000,"city":"北京"}
r2={"name":"高小2","age":19,"salary":20000,"city":"上海"}
r3={"name":"高小3","age":20,"salary":10000,"city":"南京"}
tb=[r1,r2,r3]
print(tb[1].get("salary"))
for i in tb:
if i.get("salary")>15000:
print(i.get("name"),i.get("age"),i.get("salary"),i.get("city"))
break语句
循环结束,涉及到嵌套循环时只跳出最近一层
continue语句
结束本次循环,继续下一次 ,涉及到嵌套循环时只跳出最近一层
练习
peonum=0
salarysum=0
salary=[]
while True:
floats=input("请输入员工薪资,Q或q结束")
if floats.upper()=="Q":
print("结束录入")
break
if float(floats)<=0:
print("输入有误,请重新输入")
continue
peonum+=1
salarysum+=float(floats)
salary.append(float(floats))
print("员工数是{0}".format(peonum))
print("平均工资是{0}".format(salarysum/peonum))
print("工资明细{0}".format(salary))
循环里面的else
如果在运行中间 break 则 不执行else
salarysum=0
salary=[]
for i in range(4):
floats=input("请输入员工薪资,Q或q结束")
if floats.upper()=="Q":
print("结束录入")
break
if float(floats)<=0:
print("输入有误,请重新输入")
continue
salarysum+=float(floats)
salary.append(float(floats))
else:
print("4人已经全部录入")
print("平均工资是{0}".format(salarysum/4))
print("工资明细{0}".format(salary))
循环代码优化(非常重要!)
1.减少循环内部不必要计算
2.嵌套减少内层循环计算
3.尽量使用局部变量
4.链接多个字符串 尽量join不要+
5.列表操作尽量在尾部
zip()并行迭代
names=("sarah","john","peter")
ages=("18","19","20")
jobs=("programmer","cleaner","teacher")
for name,age,job in zip(names,ages,jobs):
print("{0}__{1}__{2}".format(name,age,job))
推导式创建序列
简化代码,避免冗长
列表推导式
可以加限制条件,可以使用两个循环
cells=[(row,col) for row in range(10) for col in range(10)] print(cells)
字典推导式
my_test="i love you ,i love xxx,i love g"
char_count={c:my_test.count(c) for c in my_test}
print(char_count)
集合推导式
b={x for x in range(100) if x%9==0}
print(b)
生成器推导式(生成元组)
b={x for x in range(100) if x%9==0}
print(b)
生成器推导式(生成元组)
每次生成器只能用一次
get =(x for x in range(4))
print(tuple(get))
get =(x for x in range(5))
for x in get:
print(x)



