什么是列表推导式?
什么是列表推导式
列表推导式(List Comprehension)是Python中一种简洁的语法结构,用于快速生成列表,他可以用一行代码替代传统的for循环和append操作,使代码更简洁高效
列表推导式基本语法
[expression for item in iterable if condition ] expression 对每个元素的处理表达式 item迭代变量 iterable 可迭代对象 (如列表 元祖等) condition 可选的条件过滤(类似于if语句)
示例对比:
传统写法:
squares = [] for x in range(10): #此处 **2就是x的平方 如果是**3就是x的立方 squares.append(x**2)
列表推导式写法:
squares= [x**3 for x in range(10)]
案例:
#只计算偶数的平方 all= [x**2 for x in range(10) if x%2==0] print(all)
#返回偶数列表并去重 all1=set([int(i)**2 for i in range(10) if i%2==0]) print(all1)
#步长为2 处理方式 从0开始 20结束 每次步长2 ,如果当前i是3的倍数 进行 平方计数 返回列表 hei= [i**2 for i in range(0,20,2) if i%3==0] print(hei)
#遍历数组中的字典, 获取年龄大于103的name字段 返回列表
array=[{"name":"张三","age":103,"address":"五常"},
{"name":"李四","age":104,"address":"北京"},
{"name":"王五","age":105,"address":"哈尔滨"}]
result=[item["name"] for item in array if item["age"] >103]
print(result) # 输出['李四', '王五']
#定义字典kbinfos
kbinfos = {
#定义列表 chunks
"chunks":[
#定义字典
{"doc_id":"doc_001","content":"这是一篇文档内容1"},
{"doc_id":"doc_002","content":"这是一篇文档内容2"},
{"doc_id":"doc_003", "content": "这是一篇文档内容3"}
]
}
#索引列表 可能包含重复的索引
idx = [0,2,1,0]
#使用列表推导式和set去重
idx=[kbinfos["chunks"][int(i)]["doc_id"] for i in idx]
print(idx) #输出 ['doc_001', 'doc_003', 'doc_002', 'doc_001']
#定义字典kbinfos
kbinfos = {
#定义列表 chunks
"chunks":[
#定义字典
{"doc_id":"doc_001","content":"这是一篇文档内容1"},
{"doc_id":"doc_002","content":"这是一篇文档内容2"},
{"doc_id":"doc_003", "content": "这是一篇文档内容3"}
]
}
#索引列表 可能包含重复的索引
idx = [0,2,1,0]
#使用列表推导式和set去重
idx=[kbinfos["chunks"][int(i)]["doc_id"] for i in idx]
idx=set(idx)
print(idx) #输出 {'doc_001', 'doc_003', 'doc_002'}
print(kbinfos["chunks"][0]["doc_id"]) #输出 doc_001

浙公网安备 33010602011771号