如果表达式包含元组(例如(x,y)),则必须用括号括起来。
- # Convert height from cms to feet using List Comprehension : 1 cm = 0.0328 feetheight_in_cms = [('Tom',183),('Daisy',171),('Margaret',179),('Michael',190),('Nick',165)]height_in_feet = [(height[0],round(height[1]*0.0328,1)) for height in height_in_cms]height_in_feet[('Tom', 6.0), ('Daisy', 5.6), ('Margaret', 5.9), ('Michael', 6.2), ('Nick', 5.4)]
嵌套列表解析式
列表解析式也可以嵌套以创建复杂的列表。例如,可以仅使用列表解析式来构建矩阵。
构建一个3x3的矩阵:
- matrix = [[j * j+i for j in range(3)] for i in range(3)]
- matrix[[0, 1, 4], [1, 2, 5], [2, 3, 6]]
集合解析式
集合解析式类似于列表解析式,但返回的是集合而不是列表。意义上来说语法略有不同,创建集合解析式用花括号而不是方括号。
思考包含以下人名的列表:
- names = [ 'Arnold', 'BILL', 'alice', 'arnold', 'MARY', 'J', 'BIll' ,'maRy']
该列表包含许多重复项,并且有的名字只有一个字母。目前想要的是一个由长于一个字母且仅首字母大写的名字组成的列表。为了完成这项任务,采用了集合解析式。
- {name.capitalize() for name in names if len(name) > 1}{'Alice', 'Arnold', 'Bill', 'Mary'}
字典解析式 { }
当输入采用字典或键:值对的形式时,使用字典解析式。例如,思考这样一个字典,其中键表示字符,值表示这些字符出现在语料库中的次数。
- char_dict = {'A' : 4,'z': 2, 'D' : 8, 'a': 5, 'Z' : 10 }
字典char_dict由大写和小写字母组成。在此想要计算字母的总出现次数,不管它们是大写还是小写。本文使用字典解析式来实现这个目标:
- { k.lower() : char_dict.get(k.lower(), 0) + char_dict.get(k.upper(), 0) for k in char_dict.keys()}{'a': 9, 'z': 12, 'd': 8}
生成器解析式 ( )
列表解析是列表,因为生成器表达式是生成器。生成器函数从给定序列一次一个地输出值,而不是一次性全部输出。这是一篇很好的文章,它解释了Python中Generators的细节。 (编辑:西安站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|