[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 = {代码段}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值