什么是列表推导式?

什么是列表推导式

列表推导式(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

  

posted @ 2025-04-08 12:11  郎小乐  阅读(258)  评论(0)    收藏  举报