#!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)
Python3推导式
最新推荐文章于 2024-03-06 21:04:58 发布