python(20)- 列表生成式和生成器表达式练习Ⅱ

题目一:

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

问题一:得出既报名linux又报名python的学生列表

#常规写法:
linux=['钢弹','小壁虎','小虎比','alex','wupeiqi','yuanhao']
python=['dragon','钢弹','zhejiangF4','小虎比']
l=[]
for i in linux:
    for j in python:
        if i==j:
            l.append(i)
print(l)
---->['钢弹', '小虎比'] #列表生成式写法 linux=['钢弹','小壁虎','小虎比','alex','wupeiqi','yuanhao'] python=['dragon','钢弹','zhejiangF4','小虎比'] l=[j for i in linux for j in python if i==j] print(l)
---->['钢弹', '小虎比']

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

#常规写法
linux=['钢弹','小壁虎','小虎比','alex','wupeiqi','yuanhao']
python=['dragon','钢弹','zhejiangF4','小虎比']
l=[]
for i in linux:
    if i not in python:
        l.append(i)
print(l)
---->['小壁虎', 'alex', 'wupeiqi', 'yuanhao']

#列表生成式写法
linux=['钢弹','小壁虎','小虎比','alex','wupeiqi','yuanhao']
python=['dragon','钢弹','zhejiangF4','小虎比']
l=[i for i in linux if i not in python]
print(l)
---->['小壁虎', 'alex', 'wupeiqi', 'yuanhao']

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

linux=['钢弹','小壁虎','小虎比','alex','wupeiqi','yuanhao']
python=['dragon','钢弹','zhejiangF4','小虎比']
l=[i for i in python if i not in linux]
print(l)
----->['dragon', 'zhejiangF4']

 

 

题目二:

shares={
    'IBM':36.6,
    'lenovo':27.3,
    'huawei':40.3,
    'oldboy':3.2,
    'ocean':20.1
    }

问题一:得出股票价格大于30的股票名字列表

#常规写法
l=[]
for i in shares:
    if shares[i] > 30:
        l.append(i)
print(l)
---->['IBM', 'huawei']
#列表表达式写法 l=[i for i in shares if shares[i] > 30] print(l)
---->['IBM', 'huawei']

  

问题二:求出所有股票的总价格

l=[shares[i] for i in shares]
print(sum(l))
---->127.5

 

题目三:

l=[10,2,3,4,5,6,7]
得到一个新列表l1,新列表中每个元素是l中对应每个元素值的平方
过滤出l1中大于40的值,然后求和

#列表写法
l=[10,2,3,4,5,6,7]
l1=[i**2 for i in l]
print(l1)
---->[100, 4, 9, 16, 25, 36, 49]

l2=[j for j in l1 if j >40]
print(l2)
----->[100, 49]

print(sum(l2))
----->149

 

posted @ 2016-04-13 20:00  许二哈哈哈  阅读(532)  评论(0编辑  收藏  举报