Python3推导式

#!usr/bin/python
#coding=UTF-8
'''
Python3推导式
'''

'''
推导式:
    提供了一种简明扼要的方法来创建列表、字典、集合,适用于列表、字典、集合等可迭代数据结构(iterables)。
    它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。
    执行顺序是依次往后执行(for-->for/if-->for/if......)
    
    推导式简单的说就是把普通的多行for循环压缩成一行代码,
    这种压缩语法适用于列表、字典、集合等可迭代数据结构(iterables)
    
'''

'''
列表推导式:一种快速生成列表的方式。
    语法:
        [结果 for循环 if条件]
'''
#求列表中所有数字乘3后的列表
list1 = [1,2,3,4,5]
list2 = [x * 3 for x in list1]
print(list2)    #输出 [3, 6, 9, 12, 15]

#带if判断的
list2 = [x * 3 for x in list1 if x > 2]
print(list2)    #输出 [9, 12, 15]

#多个for
list2 = [x * y for x in list1 for y in range(3) ]
print(list2)    #输出 [0, 1, 2, 0, 2, 4, 0, 3, 6, 0, 4, 8, 0, 5, 10]

for y in range(3):
    print(y,end=',')    #输出 0,1,2,

#多个for 多个if
list2 = [x * y for x in list1 for y in range(3) if x > 2 if y > 1 ]
print(list2)    #输出 [6, 8, 10]

'''
字典推导式:
    语法:[k:v for循环 if条件]
'''
dict1 = {'k1': 1,'k2': 2}
dict2 = {key: value * 3 for key,value in dict1.items() }
print(dict2)    #输出 {'k1': 3, 'k2': 6}

'''
集合推导式:
    语法:{结果 for循环 if条件}
'''
set1 = {5,4,3,2,1}
set2 = {x * 2 for x in set1 if x > 2}
print(set2) #输出 {8, 10, 6}

'''
没有元组推导式
    需要加tuple()函数,因为圆括号在Python中被用作生成器的语法了。
'''
tuple1 = (1,2,3,4,5)
tuple2 = (x * 2 for x in tuple1)
print(tuple2)   #输出 <generator object <genexpr> at 0x00000293282F9F90>
#由此可以看出,我们得到了一个生成器,在通过tuple()返回来转化为元组

tuple1 = (1,2,3,4,5)
tuple2 = tuple(x * 2 for x in tuple1)
print(tuple2)   #输出 (2, 4, 6, 8, 10)

tuple1 = (1,2,3,4,5)
tuple2 = tuple(x * 2 for x in tuple1 if x > 2)
print(tuple2)   #输出 (6, 8, 10)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风之梦丽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值