s = ''
s.__iter__()
l = []
l.__iter__()
t = ()
t.__iter__()
s = {1, 2, 3}
s.__iter__()
d = {'k1': 1, }
d.__iter__()
with open(r'a.txt', mode='rt', encoding='utf-8') as f:
f.__iter__()
pass
''' [expression for item1 in iterable1 if condition1 for item2 in iterable2 if condition2 ... for itemN in iterableN if conditionN ]
#类似于 res=[] for item1 in iterable1: if condition1: for item2 in iterable2: if condition2 ... for itemN in iterableN: if conditionN: res.append(expression) '''
# 列表生成式案例
l = ['xiaobao_', 'lq_', 'zd']
# 把所有小字母全变成大写
new_l = [item.upper() for item in l]
print(new_l)
# ['XIAOBAO_', 'LQ_', 'ZD']
# 把所有的名字去掉后缀_
new_l = [item.replace('_', '') for item in l if True] # 可以不用加if Trueprint(new_l)
# ['xiaobao', 'lq', 'zd']
2、字典生成式
items = [('xiaobao', 6), ('zd', 32), ('lq', 35), ('lr', 40)]
dic = {k: v for k, v in items if k != "lr"} # 解压赋值print(dic)
3、集合生成式
4、生成器表达式
g = (i for i in range(10) if i > 2) # 没有元组生成器,元组不可改,没有.append()print(g, type(g)) # !!!!!!!强调!!!!! 此刻g内部一个值没有(老母鸡,还没有下蛋),需要next(g),才产值。for i in g:
print(i)
应用:统计day19中笔记中字符个数
# 方法一:
with open(r'笔记.txt', mode='r', encoding='utf-8') as f:
res = 0
for line in f:
# print(len(line))
res += len(line)
print(res)
# 577
# 方法二
with open(r'笔记.txt', mode='r', encoding='utf-8') as f:
res = sum([len(line) for line in f]) # sum()里面需要一个可迭代对象,方法二是列表print(res)
# 577
# 方法三(效率最高)
with open(r'笔记.txt', mode='r', encoding='utf-8') as f:
# res=sum((len(line) for line in f )) # sum()里面需要一个可迭代对象,方法三是生成器
res = sum(len(line) for line in f) # 简化,sum()是触发了next()了的,生成器才产值print(res)
# 577print(len(line) for line in f) # <generator object <genexpr> at 0x000001BEFA49F510>
nums = [1, 2, 3, 5, 7, 22, 33, 34]
find_num = 7
# 方案一:整体遍历效率太低for num in nums:
if num == find_num:
print('find it')
break# 方案二:二分法
# 找中间值mid_num
nums = [1, 2, 3, 5, 7, 22, 33, 34]
def binary_num(find_num, l):
print(l)
mid_index = len(l) // 2
if len(l) == 0:
print('num not in list')
returnif find_num > l[mid_index]:
# 接下来查找列表右半部分# 列表1=列表切右半部分
l = l[mid_index + 1:]
binary_num(find_num, l)
elif find_num < l[mid_index]:
# 接下来查找列表左半部分
l = l[:mid_index]
binary_num(find_num, l)
else:
print('find it')
binary_num(33, nums)
六 匿名函数
1、def用于定义有名函数
# func=函数的内存地址def func(x, y):
return x + y
2、lamdab用于定义匿名函数
lambda x, y: x + y # x+y前的return省略print(func) # <function func at 0x000001D758E27430>print(lambda x, y: x + y) # <function <lambda> at 0x000001D758E271F0>
3、调用匿名函数
# 方式一:
(lambda x, y: x + y)(1, 2) # 调用,内存地址的调用
res = (lambda x, y: x + y)(1, 2) # 返回值print(res) # 3
# 方式二:
func = lambda x, y: x + y # “匿名”的本质就是要没有名字,所以此处为匿名函数指定名字是没有意义的
res = func(1, 2)
print(res) # 3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用