Python基础知识 2022-11-14 57-68 循环

循环

for循环

常用语遍历可迭代对象(字符串、列表、元组、字典、集合、range对象等)

for x in range(10):
	print(x) # 0 1 2 3 4 5 6 7 8 9

for x in dict1:
	print(x)
for x in dict1.keys(): # 跟上一个一样,都是打印字典中的键对象
	print(x)
for x in dict1.items(): # 每个键值对是一个元组,逐个打出元组
	

for x in "abc":
	print(x) # a b c
	

range对象

range对象是一个迭代器对象
range(start,end[,step])
包头不包尾
step默认为1
操作:用for循环,计算1-110正整数累加和;计算1-100之间偶数累加和;计算1-100之间奇数累加和

sum_all = 0
sum_odd = 0
sum_even = 0

for x in range(101):
	sum_all += x
	if x%2==1:
		sum_odd += x
	else:
		sum_even += x
# for循环中用range比while循环简单
print("总和是{0},奇数和是{1},偶数和是{2}"。format(sum_all, sum_odd, sum_even))

嵌套循环

一个循环体里套另一个循环,也叫多重循环
打印:
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4

for i in range(5):
	for m in range(4):
		print(i, end="\t")
	print()

自己的理解:大循环是换行,小循环都是打印行内容,打印的东西变动就用本循环的“变量”,打印的东西不变就用上一个循环的“变量”

for m in range(1,10):  
   for n in range(1,m+1):  
      print("{0}*{1}={2}".format(m,n,m*n), end='\t')  
   print()		
tb = []
r1 = dict(name="Aaron",salary=30000,city="BJ")
r2 = dict(name="Bill",salary=20000,city="SZ")
r3 = dict(name="Catherine",salary=10000,city="SH")
tb = [r1,r2,r3]

for x in tb:
	if x.get("salary")>15000:
		print(x)

break语句

用于while和for循环中
用来结束整个循环
嵌套循环中,只能结束最近一层的循环

continue语句

用于循环中,结束本循环,继续下一次
嵌套循环中,只能结束最近一层的循环
例子:输入值,打印,如果输入值不符合规则,就重新开始continue,如果主动退出,就break

else语句

Python中有,别的语言很多没有
while和for循环可以带一个else(这也是为什么我有点搞不清选择结构和循环结构…)
循环中的else 如果没有被break,就会执行else
注意:else要跟while对其,不要缩进
我的小结:else就是顺利结束循环的一个标志
我的小结:break 和 continue都是某种程度中止循环
我的小结:循环体的思路:

  • 首先设定需要的变量
  • while、for 循环条件
    • 循环动作(不会受中止条件影响的)
    • 中止情况:break、continue
    • 循环动作(会受中止条件影响的)
  • else: 中止后不发生的情况

循环代码优化技巧

一定要斤斤计较性能!

  • 编写循环时的原则:
    • 减少内部循环的不必要计算,能往外提就往外提
    • 尽量使用局部变量
  • 其它优化:
    • 字符串拼接用join()不要用加号
    • 列表进行元素插入、删除尽量在尾部

zip()并行迭代

zip()对多个序列进行并行迭代,在最短序列用完的时候会停止

# 测试zip()并行迭代  
  
for i in [1,2,3]:  
    print(i)  
  
names = ("gao1","gao2","gao3","gao4")  
ages = (18, 16, 20, 22)  
jobs = ("teacher","scientist","singer","dancer")  
  
for name, age, job in zip(names, ages, jobs):  
    print("{0}-{1}-{2}".format(name, age, job))  
  
for i in range(len(names)):  
    print("{0}-{1}-{2}".format(names[i], ages[i], jobs[i]))

推导式创建序列

  • 列表推导式:list1 = [x*2 for x in range(10) if x%2==0]
  • 字典推导式:dict1 = {k:s.count(k) for k in s}
  • 集合推导式:set1 = {x*2 for x in range(10) if x%2==0 }
    • 跟列表、字典基本没有区别啊
  • 生成器推导式:gnt = (x for x in range(10))
    • 生成的是一个生成器,只能用一次数据就没啦
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值