3月03日课后总结

3/03课后总结

配合匿名函数使用的方法

1. map(函数名, 要遍历的数据)  # 内部本质就是for循环,再记住两个参数的位置和作用

2. zip(拉链)
l = [1, 2, 3, 4, 5, 6, 7, 8]
l1 = [11, 21, 31, 41, 51, 61, 71, 81]
l2 = [1, 2, 3, 4]
l3 = [12, 22, 32, 42, 52, 62, 72, 82]
l4 = [13, 23, 33, 43, 53, 63, 73, 83]
res = zip(l, l1, l2, l3, l4)
print(list(res))

3. max和min
print(max(l1))
print(min(l4))

"""
	如果是字典就是比较key键的大小
"""
dic = {
    'zhangsan': 1000,
    'lisi': 2000,
    'wanger': 3000,
    '444': 4000
}
print(max(dic))
print(max(dic, key=lambda key: dic[key]))
print(min(dic))
print(min(dic, key=lambda key: dic[key]))
  # 如果函数中key值被传了函数,那么就根据所传的返回值进行比较

4. 过滤
res = filter(lambda x: x > 20, l1)
print(list(res))

可迭代对象

"""
	迭代就是每次的结果都需要上一次的结果
	内置有__iter__方法的对象都是可迭代对象
	目前所学的凡是可以用for遍历的都是可迭代对象
"""
print(c.__iter__()) = print(iter(c))  # 这两种方式相等

迭代器对象

"""
	既有__iter__方法, 也含有__next__方法的称为迭代器对象
	文件对象即是可迭代对象又是迭代器对象
	可迭代对象调用__iter__方法
	可以给我们提供一种不依赖索引取值的方法
"""
l = [1, 2, 3, 4, 5, 6, 7]
x = l.__iter__()
print(x.__next__())  # 1
print(x.__next__())  # 2
print(x.__next__())  # 3

print(l.__iter__().__next__())  # 1
print(l.__iter__().__next__())  # 2
print(l.__iter__().__next__())  # 3

for循环内部原理

"""
	for循环内部执行流程:
		1. 把关键字in后面的数据类型转为了迭代器 __iter__
		2. 循环next取值
		3. next取值完毕之后也报错了,自动处理错误并且结束while循环
"""
l = [1, 2, 3, 4, 5, 6, 7]
x = l.__iter__()
while True:
    print(x.__next__())
    # 这么写会报错,其实for也会报错,只是不显示出来

捕捉异常

"""
	异常就是错误的信号,如果不处理,异常后面的都不会正常执行
	异常由Traceback开始
	XXXError:这个现实错误的类型
	:后面会显示错误的原因
	语法错误是不被允许的
	逻辑错误虽然允许但是要避免
	常见的错误类型有:
	NameError
    IndexError
    KeyError
    ValueError
    ZeroDivisionError
"""
  # 捕捉异常:
    try:
      	被监测的代码
    except 错误的类型1 as e:
        错误处理,e:错误的原因
  # 万能捕捉
except Exception as e:
    print(e)
"""
	try except异常捕捉需要注意
    	1. try里面被监测的代码尽量少
    	2. 在明显没有错误的代码不要被捕捉
"""
posted @ 2023-03-03 21:09  橘子熊何妨  阅读(21)  评论(0)    收藏  举报