[Python] 列表推导式

本文介绍了Python列表推导式的概念和用法,包括简单的使用示例、在推导式中加入条件判断、多重for循环的推导式,并扩展讨论了元组推导式和字典推导式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、介绍

当需要对一个列表里的所有元素都进行相同操作是,使用遍历的方式需要写多行代码,显得比较繁琐

而采用列表推导式可以一行命令完成

二、简单的使用示例

示例:现有一个列表 a = [1,2,3,4,5],需要将每个元素都加1并生成新的列表b

# ****一般方式
# 方法1
a = [1,2,3,4,5]
b = []
length = len(a)
for i in range(length):
	num = a[i]+1
	b.append(num)
print(b)

# 方法2
a = [1,2,3,4,5]
b = []
for i in a:	
    num = i+1
	b.append(num)
print(b)

# ****使用列表推导式
a = [1,2,3,4,5]
b = [i+1 for i in a]
print(b)

三、在推导式中加入条件判断

示例:现有一个列表 a = [1,2,3,4,5],需要将小于等于3的元素乘以3,大于3的元素乘以2,并生成新的列表b

a = [1,2,3,4,5]
b = [i*3 if i<=3 else i*2 for i in a]
print(b)    # 输出[3, 6, 9, 8, 10]

四、多重for循环的列表推导式

记住一点就行了:逻辑是从第一个for开始,从左往右执行,再取第一个for左侧的表达式放到list里

示例:# 有客户信息如下,需拿到与A公司有股权投资关系的,成立年限10年以上的公司客户名称list

# 有客户信息如下,需拿到与A公司有股权投资关系的,成立年限10年以上的公司客户名称list
custs = [
    {
        'type':'person',
        'info': {
            'name':'张三',
            'age':'28',
            'relationCompanys':[
                {'name':'A公司','relationType':'股权投资'}
            ]
        },
    },
    {
        'type': 'company',
        'info': {
            'name':'xx公司',
            'age':'7',
            'relationCompanys':[
                {'name':'A公司','relationType':'股权投资'},
                {'name':'B公司','relationType':'合同纠纷'}
            ]
        }
    },
    {
        'type': 'company',
        'info': {
            'name':'yy公司',
            'age':'10',
            'relationCompanys':[
                {'name':'A公司','relationType':'股权投资'},
                {'name':'B公司','relationType':'合同纠纷'},
                {'name':'C公司','relationType':'股权投资'}
            ]
        }
    }
]

# 不使用列表推导式
infoList = []
for cust in custs:
    if cust.get('type') == 'company':
        custNm = cust.get('info').get('name')
        age = cust.get('info').get('age')
        if int(age) >= 10:
            relationCompanys = cust.get('info').get('relationCompanys')
            for relationCompany in relationCompanys:
                companyNm = relationCompany.get('name')
                relationType = relationCompany.get('relationType')
                if companyNm == 'A公司' and relationType == '股权投资':
                    infoList.append(custNm)
print(infoList)     # ['yy公司']

# 使用列表推导式
infoList = [cust.get('info').get('name')
            for cust in custs
                if cust.get('type') == 'company' and int(cust.get('info').get('age')) >=10
            for relationCompany in cust.get('info').get('relationCompanys')
                if relationCompany.get('name') == 'A公司' and relationCompany.get('relationType')=='股权投资'
            ]
print(infoList) # ['yy公司']

五、扩展

除了列表推导式外,还有元组推导式、字典推导式

元组推导式:tuple_name = (代码段)

字典推导式:dict_name = {代码段}

Python列表推导式是一种简洁的语法,用于快速创建列表。它允许我们在一行代码中使用循环和条件语句来生成列表元素。列表推导式的一般语法是在方括号内使用表达式和循环或条件语句。 引用\[1\]中的代码展示了一个使用两个嵌套循环的列表推导式的例子。通过使用range函数生成一系列数字,我们可以在循环中创建元组,并将其添到空列表中。最终,我们得到了一个包含所有元组的列表。 引用\[2\]中的代码展示了一个简单的列表推导式的例子。通过使用range函数生成一系列数字,我们可以直接将这些数字添到空列表中。 引用\[3\]中的代码展示了另一个使用两个嵌套循环的列表推导式的例子。与引用\[1\]中的代码相比,这里使用了更简洁的语法来生成包含所有元组的列表。 总结来说,Python列表推导式是一种简洁而强大的语法,可以帮助我们快速创建列表。它可以在一行代码中使用循环和条件语句来生成列表元素。 #### 引用[.reference_title] - *1* *2* *3* [Python列表推导式(更有风格的Python代码写法)](https://blog.youkuaiyun.com/weixin_48728769/article/details/124572778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值