python 学习笔记(3)列表、集合和字典推导式

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

expr for val in collection if condition

例子,集合推导列表

#推导式
#集合转换列表
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)函数
原文地址:https://www.cnblogs.com/daniel-niu/p/10838411.html