生成器表达式练习

 

有两个列表,分别存放来老男孩报名学习linux和python课程的学生名字
linux=['钢弹','小壁虎','小虎比','alex','wupeiqi','yuanhao']
python=['dragon','钢弹','zhejiangF4','小虎比']
问题一:得出既报名linux又报名python的学生列表

问题二:得出只报名linux,而没有报名python的学生列表
问题三:得出只报名python,而没有报名linux的学生列表

 1 linux = ['钢弹', '小壁虎', '小虎比', 'alex', 'wupeiqi', 'yuanhao']
 2 python = ['dragon', '钢弹', 'zhejiangF4', '小虎比']
 3 #     问题一:得出既报名linux又报名python的学生列表
 4 In_Linux_Python=(i for i in linux if  i in python)   #使用生成器表达式,得到一个生成器内存地址
 5 print(list(In_Linux_Python))   #将生成器强制转化成列表输出
 6 #     问题二:得出只报名linux,而没有报名python的学生列表
 7 In_Linux_Not_Python = (i for i in linux if i not in python)
 8 print(list(In_Linux_Not_Python))
 9 #     问题三:得出只报名python,而没有报名linux的学生列表
10 In_Python_Not_Linux = (i for i in python if i not in linux)
11 print(list(In_Python_Not_Linux))
 
shares={    'IBM':36.6,    'lenovo':27.3,    'huawei':40.3,    'oldboy':3.2,    'ocean':20.1    }
问题一:得出股票价格大于30的股票名字列表
  问题二:求出所有股票的总价格

l=[10,2,3,4,5,6,7]
  得到一个新列表l1,新列表中每个元素是l中对应每个元素值的平方
  过滤出l1中大于40的值,然后求和
 1 shares={
 2     'IBM':36.6,
 3     'lenovo':27.3,
 4     'huawei':40.3,
 5     'oldboy':3.2,
 6     'ocean':20.1
 7     }
 8 #     问题一:得出股票价格大于30的股票名字列表
 9 share1 = (i for i in shares if shares[i]>30)
10 print(list(share1))
11 
12 #     问题二:求出所有股票的总价格
13 share1 = (shares[i] for i in shares )
14 print(sum(list(share1)))
15 
16 l=[10,2,3,4,5,6,7]
17 # 得到一个新列表l1,新列表中每个元素是l中对应每个元素值的平方
18 # 过滤出l1中大于40的值,然后求和
19 ll = (i**2 for i in l )
20 ll = list(ll)
21 print(ll)
22 ll_sum = (i for i in ll if i >40)
23 print(sum(list(ll_sum)))

 



 



  
posted @ 2017-04-12 20:18  shy车队破风手  阅读(239)  评论(0编辑  收藏  举报