从入门到入狱------推导式

本文介绍Python中列表推导式与字典推导式的使用方法,包括基本结构、条件结构及多重循环结构,并提供了集合推导式、元组推导式等示例,适合初学者快速掌握。

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

入门 N day

推导式:用来快速方便产生列表或者字典的表达式

  • 列表推导式

  • 基本结构

    列表=[表达式 for 变量 in 序列]

    产生一个新的列表,列表中的元素就是每次循环对应的表达式的结果

    相当于:

    列表=[]

    for 变量 in 序列:

    ​ 列表.append(表达式)

    list1 = [10 for i in range(3)]
    print(list1)  # [10, 10, 10]
    
    list2 = [2 * i for i in range(1, 4)]
    print(list2)  # [2, 4, 6]
    

    练习:写一个列表推导式,产生一个列表中的元素满足以下规律:str0,str3,str6,…,str99

    list3=[f'str{i}'for i in range(0,100,3)]
    print(list3)
    
  • 条件结构

    列表=[表达式 for 变量 in 序列 if 条件语句]

    相当于:

    列表=[]

    for 变量 in 序列:

    ​ if 条件语句:

    ​ 列表.append(表达式)

    练习:写一个列表推导式,产生一个列表中的元素满足以下规律:str1,str3,str6,…,str99

    方法一

    list1=[f'str{i}' for i in range(1,100) if i % 3 == 0 or i == 1 ]
    print(list1)
    

    方法二:三目运算符

    list2=['str1' if i == 0 else f'str{i}' for i in range(0,100,3)]
    print(list2)
    
  • 多重循环结构1:

    列表=[表达式 for 变量1 in 序列1 for 变量2 in 序列2 ]

    相当于:

    列表=[]

    for 变量1 in 序列1 :

    ​ for 变量2 in 序列2 :

    ​ 列表.append(表达式)

  • 多重循环结构2:

    列表=[表达式 for 变量1 in 序列1 if 条件语句 for 变量2 in 序列2 If 条件语句 ]

    相当于:

    列表=[]

    for 变量1 in 序列1 :

    ​ if 条件语句:

    ​ for 变量2 in 序列2 :

    ​ if 条件语句:

    ​ 列表.append(表达式)

  • # 集合推导式
    a1 = {i for i in 'hello'}
    print(a1)  # {'h', 'e', 'l', 'o'}
    
    # 元组和集合推导式
    a2 = tuple(x * 2 for x in 'hello')
    print(a2)  # ('hh', 'ee', 'll', 'll', 'oo')
    
    # 字典推导式
    a3 = {x: x * 2 for x in 'hello'}
    print(a3)  # {'h': 'hh', 'e': 'ee', 'l': 'll', 'o': 'oo'}
    
    a4 = dict((x, x * 2) for x in 'hello')
    print(a4)  # {'h': 'hh', 'e': 'ee', 'l': 'll', 'o': 'oo'}
    
    # 练习3 通过字典推导式交换一个字典的键和值 dic={'a':10,'b':20,'c':30}
    dic1 = {'a': 10, 'b': 20, 'c': 30}
    # dic12 = dict((dic1[i], i) for i in dic1)
    dic2 = {dic1[i]: i for i in dic1}
    print(dic2)
    
    # 通过字典推导式交换一个字典的键和值 如果值是可变的在新的字典中不交换
    dic3 = {'a': 10, 'b': 20, 'c': 30, 'd': [10, 20]}
    dic4 = dict((i,dic3[i]) if type(dic3[i]) in (list,set,dict) else (dic3[i],i) for i in dic3)
    print(dic4)
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值