利用推导式,可以很方便的从集合中过滤元素形成新的列表,

expr for val in collection if condition

例子,集合推导列表

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
#推导式
#集合转换列表
a={"daniel","nba","chris","sfe","hr"}
b=[my.upper() for my in a if len(my)>2 ]#长度大于2的变大写
print(b)
print(a)
#输出结果 ['DANIEL', 'SFE', 'NBA', 'CHRIS']
#输出结果 {'daniel', 'sfe', 'nba', 'chris', 'hr'}

用相似的方法,还可以推导集合和字典。字典的推导式如下所示:

dict_comp = {key-expr : value-expr for value in collection if condition}   In [159]: loc_mapping = {val : index for index, val in enumerate(strings)} In [160]: loc_mapping Out[160]: {'a': 0, 'as': 1, 'bat': 2, 'car': 3, 'dove': 4, 'python': 5}  

集合的推导式与列表很像,只不过用的是尖括号:

set_comp = {expr for value in collection if condition}   In [156]: unique_lengths = {len(x) for x in strings} In [157]: unique_lengths Out[157]: {1, 2, 3, 4, 6}

嵌套推导

#嵌套推导,列表中包含列表,推导为一个列表
all_data = [['John', 'Emily', 'Michael', 'Mary', 'Steven'],['Maria', 'Juan', 'Javier', 'Natalia', 'Pilar']]
newlist=[name for names in all_data for name in names if len(name)>=6] #或者过滤名字中a出现多次的,name.count('a')>2
print(newlist)
#结果 ['Michael', 'Steven', 'Javier', 'Natalia']

记住,for表达式的顺序是与嵌套for循环的顺序一样(而不是列表推导式的顺序):

flattened = [] for tup in some_tuples: for x in tup: flattened.append(x)   下一篇学习python的函数相关,python学习笔记(4)函数

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄