概述
Python 回忆录
- 2020/8/26
- For 循环结构
- Range 对象
- 嵌套循环
- Break语句
- Else 语句
- 循环代码的优化
- 使用zip()并行迭代
- 推导式创建序列
- 小练习
- 函数的用法和底层分析
- 形参和实参
- 返回值
2020/8/26
For 循环结构
for 变量 in 可迭代对象:
循环体语句
可迭代对象 就是序列。 可以是元组,字符串 ,列表
for x in (20,30,40)
print(x*3)
for y in "abcdefg"
print(y)
d = {'name': 'liuxi','age':18,'job':'programmer'}
for x in d: #== d.keys
print(x)
for x in d.items:
print(x)
Range 对象
是一个序列,产生一个数字范围的整数
sum_all = 0
sum_odd = 0
sum_even = 0
for x in range(101)
sum_all += x
if x%2==1:
sum_0dd += x
else:
sum_even += x
print({0} {1}{2},format(sum_all,sum_odd,sum_even))
嵌套循环
就是循环内套循环,也叫多重循环
or x in range(5):
for y in range(5):
print(x, end="/t")
print()
99乘法口诀
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()
# 字典也可以
r1 = {'name': 'mark', 'age': 18, 'salary': 1000, 'city': 'beijing'}
r2 = {'name': 'jack', 'age': 20, 'salary': 1500, 'city': 'beijing'}
r3 = {'name': 'hank', 'age': 28, 'salary': 8000, 'city': 'beijing'}
tb = [r1, r2, r3]
for x in tb:
if x.get('salary') > 1000:
print(x.values())
Break语句
break 用于while, for中断循环 只能中断最临近的循环
while True:
a = input("输入一个字符,有q是退出")
if a == 'q' or a == 'Q':
print("有q 程序退出")
break
else:
print(a)
continue 用于结束本次循环,然后继续下一次循环
Else 语句
while,for循环可以带一个 else,如果 for,while 被break 停止了,就不执行else了
salary_sum = 0
salary = []
for i in range(4):
s = input("请输入4个员工的工资 按q结束")
if s.upper() == "Q":
print("程序结束 已退出")
break
if float(s) < 0:
continue
salary_sum += float(s)
salary.append(float(s))
else:
print("已录入所有员工")
print("总工资是:", salary_sum)
print("平均工资是", salary_sum//4)
循环代码的优化
编写循环时 遵守3个原则 来提高运行效率
- 尽量减少循环内部不必要的计算
- 嵌套循环中,尽量减少内层循环的计算,尽可能的往外面放
- 局部变量比较好,因为局部变量查询快
- 连接多个字符串,使用join 而不是使用+
- 列表插入最好 是在列表尾部操作
使用zip()并行迭代
可以使用多个序列 并行迭代
name = ('jiaxi', 'jake', 'hank',)
age = (16, 17, 18, 22)
jobs = ("worker", "nurse", "doctor")
for name, age, jobs in zip(name, age, jobs):
print("{0}---{1}---{2}".format(name, age, jobs))
推导式创建序列
是一个典型的Python 风格,是一个或者多个迭代器快速创建序列的一种方法。
列表推导式
[表达式 for item in 可迭代对象]
or
[表达式 for item in 可迭代对象 if 条件判断]
y = [x*2 for x in range(1,5)]
print (y)
y = [x*3 for x in range(1,50) if x/5 ==0]
print (y)
cell = [(x,y) for x in range(5) for y in range(5)]
print(cell)
字典推导式
{key : value for 表达式 in 可迭代对象} 也可以增加if条件判断 和多个for 循环
#统计文本中出现的次数
my_text = " i love you, you love me"
char_count = {c: my_text.count(c) for c in my_text if my_text.count(c) >= 2}
print(char_count)
集合推导式
{key for item in 可迭代对象} 也可以加if条件语句。集合不可重复
生成器推导式(生成元组)
(表达式 for item in 可迭代对象)
只能读取一次,返回的是一个生成器,用来生成一个元组
y = (x*3 for x in range(1,50) if x/5 ==0)
print (y)
只能读取一次
小练习
海龟画图画同心圆 并且换不同的颜色
import turtle
p = turtle.Pen()
p.width(4)
my_colors = ['yellow', 'light blue', 'brown', 'red', 'pink']
p.speed(0)
for i in range(100):
p.penup()
p.goto(0, -10*i)
p.pendown()
p.color(my_colors[i % len(my_colors)])
p.circle(20+i*10)
turtle.done()
函数的用法和底层分析
函数的可复用性 的程序代码块,也代表了一个功能。
有内置函数,标准库函数,第三方库函数,,自定义函数
def 函数名([参数列表]):
函数体/多个语句块
”文档字符串“
def test01():
print("*"* 10)
test01()
形参和实参
- 圆括号内是形式参数列表,有多个参数则使用逗号隔开
- 形式参数不需要参数声明,也不需要指定函数返回类型
- 无参数也要必须要保留空的圆括号
- 实参列表必须与形参列表一致
def printMax(a, b):
"""用于比较两个数的大小"""
max1 = ''
if a > b:
max1 = a
else:
max1 = b
return max1
printMax(10, 20)
d = printMax(10, 20)
返回值
如果函数中包含return 则代表返回了一个值 或者中断函数
如果函数中不包含return 则返回None值,有return 但没有值 也是None
要返回多个返回值的时候,使用列表,元组,字典 集合将多个值”存起来“即可
最后
以上就是花痴微笑为你收集整理的Day 5 :for循环,推导式,zip2020/8/26的全部内容,希望文章能够帮你解决Day 5 :for循环,推导式,zip2020/8/26所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复