day9-推导式

推导式

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

1.列表推导式

1) 基本结构

[表达式 for 变量 in 序列]
产生一个新的列表,列表中的元素就是每次循环对应的表达式的结果
相当于:
列表 = []
for 变量 in 序列:
列表.append(表达式)

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

list3 = [3*x for x in range(0, 34)]
list4 = ['str%s' % x for x in list3]
print(list4)

2) 条件结构

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

相当于:

列表 = []
for 变量 in 序列:
    if 条件语句:
        列表.append(表达式)
list5 = [f'str{x}' for x in range(1, 100) if x == 1 or x % 3 == 0]
print(list5)
list6 = ['str1' if x == 0 else f'str{x}' for x in range(0, 100, 3)]
print(list6)

多重循环结构1:
列表 = [表达式 for 变量1 in 序列1 for 变量2 in 序列2]

相当于:
列表 = []
for 变量1 in 序列1:
    for 变量2 in 序列2:
        列表.append(表达式)

多重循环结构2:
列表 = [表达式 for 变量1 in 序列1 for 变量2 in 序列2 if 条件语句]

相当于:
列表 = []
for 变量1 in 序列1:
    for 变量2 in 序列2:
        if 条件语句:
            列表.append(表达式)
list7 = [f'{x}{y}' for x in range(3) for y in 'abc']
print(list7)    # ['0a', '0b', '0c', '1a', '1b', '1c', '2a', '2b', '2c']

2.集合推导式

将列表推导式的[]变成{}

a1 = {x for x in 'hello'}
print(a1)   # {'o', 'h', 'e', 'l'}

3.元组和集合推导式

元组 - 将列表推导式的[]变成tuple()
字典 - (表达式是键值对形式)将列表推导式的[]变成{}; (表达式有且只有两个元素的序列的时候)将列表推导式的[]变成dict()

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'}

dic = {'a': 10, 'b': 20, 'c': 30}
dic1 = dict((dic.get(x), x) for x in dic)
print(dic1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值