一、循环结构
1.1 for循环和while循环
- Python提供了两种循环结构:
while
循环和for
循环 - while循环一般用于
循环次数难以提前确定
的情况,也可用于循环次数确定的情况 - for循环一般用于
循环次数可以提前确定
的情况,尤其适用于枚举或遍历序列或迭代对象中元素的场合 - 循环结构之间可以相互
嵌套
1.2 语法结构
while循环:
while 条件表达式:
循环体
[else: # 如果循环是因为break结束的,就不执行else中的代码
else子句代码块]
for循环:
for 取值 in 序列或迭代对象:
循环体
[else:
else子句代码块]
1.3 循环结构的优化
- 在编写循环语句时,应尽量
减少
循环内部不必要的计算,将与循环变量的无关变量尽可能的提取到循环之外
for i in range(1000):
result = []
for i in digits:
i = i*100
for j in digits:
j = j*10
for k in digits:
result.append(i+j+k)
- 在循环中应
尽量引用局部变量
,因为局部变量的查询和访问速度比全局变量略块。另外,在使用模块中的方法时,可以通过将其直接导入来减少查询次数和提高运行速度。
import time
import math
start = time.time() #获取当前时间
for i in range(10000000):
math.sin(i)
print('Time Used:', time.time()-start) #输出所用时间
loc_sin = math.sin
start = time.time()
for i in range(10000000):
loc_sin(i)
print('Time Used:', time.time()-start)
所用的例子大多数都来自老师上课讲的奥和老师发的PPT
二、break和continue语句
- break语句在while循环和for循环中都可以使用,一般与选择结构结合使用,一旦break语句被执行,将使得整个循环提前结束。
- continue语句的作用是终止当前循环,并忽略continue之后的语句,然后回到循环的顶端,提前进入下一次循环。
- 除非break语句让代码更简单或更清晰,否则不要轻易使用。
例1:下面的代码用来计算小于100的最大素数,注意break语句和else子句的用法。
>>> for n in range(100, 1, -1):
for i in range(2, n):
if n%i == 0:
break
else:
print(n)
break
97
例2:输出10以内的所有奇数
for i in range(10):
if i%2==0:
continue
print(i, end=' ')
1 3 5 7 9
三、案例
例1:计算1+2+3+…+100 的值。
s=0
for i in range(1,101):
s = s + i
print('1+2+3+…+100 = ', s)
print('1+2+3+…+100 = ', sum(range(1,101)))
例2:统计成绩中的优、良、中、及格、不及格的人数。
from itertools import group by #group by分类汇总作用(先对成绩进行排序)
scores=[89,70,49,87,92,84,73,71,78,81,90,37,77,82,81,
79,80,82,75,90,54,80,70,68,61]
def classify(score):
if score>=90: return "优"
elif score>=80: return "良"
elif score>=70: return "中"
elif score>=60: return "及格"
else: return "不及格"
groups={category:len(tuple(score)) for category,score in groupby(sorted(scores),classify)}
print(groups)
写完啦,还有一篇啦 冲鸭!
- 大爱小红书上的图片,太阔爱辽~