# 这是一种简化操作,可以将转换和换算合为一体,比如我们有一个列表 nums = [1,2,3,4,5] # 计算平方和我们一般这样子做: nums_square = [x*x for x in nums] s = sum(nums_square) # 这个时候我们就可以这样来简化一下运算: s = sum(x*x for x in nums) # 又或者我们要在一堆参数中间加一些分隔符: # 注意,这里的join和os.path.join不一样,这里是用来给jion输入的列表加分隔符的 s = ("ACME", 50, 123.45) print(','.join(str(x) for x in s)) # 这里我们将生成器表达式从()里薅出来,当作可迭代参数塞进了函数里,这样避免了列表生成器造成的内存浪费 # 对单个字典内,我们用键值反转的方法来找元素,但是如果这是一个字典列表,那情况就大大不同了 portfolio = [ {'name': 'GOOG', 'shares': 50}, {'name': 'YHOO', 'shares': 75}, {'name': 'AOL', 'shares': 20}, {'name': 'SCOX', 'shares': 65} ] max_share = max(portfolio, key=lambda x: x["shares"]) print(max_share) # 当然如果仅仅只要拿到最小值就用到了生成器表达式内嵌的方法 max_share_num = max(s['shares'] for s in portfolio) print(max_share_num)