三元表达式;列表、字典、集合生成式

一、三元表达式:

 """

三元表达式固定表达式
值1 if 条件 else 值2
条件成立 值1
条件不成立 值2
"""

运用场景:当某个条件成立做一件事,不成立做另外一件事。

例1

x = 99999
y = 9898898
res = x if x > y else y
# 如果if后面的条件成立返回if前面的值 否则返回else后面的值
print(res)

例2:

name = input('输入你的名字:>>>')
res = 'cool' if name == 'luke' else 'sb'
print(res)

 

二、列表生成式

  res = [name_x for name_x in list if +条件]

  当我们拿到一个列表,但需求只对列表内数值进行操作修改。

  例:l = ['tom','nick','oscar','sean']   #  需求名字后+_sb

l = ['tom','nick','oscar','sean']
res = ['%s_sb'%name for name in l]
print(res)  #  输出  ['tank_sb', 'nick_sb', 'oscar_sb', 'sean_sb']

#  进阶 添加取舍条件
l = ['tank_sb', 'nick_sb', 'oscar_sb', 'sean_sb','jason_NB']
res = [name for name in l if name.endswith('_sb')]
print(res)   #输出 ['tank_sb', 'nick_sb', 'oscar_sb', 'sean_sb']

   案例二中添加 if条件   ps:if后面不支持添加else

      先for循环依次取出列表里面的每一个元素

      然后交由if判断 条件成立才会交给for前面的代码

      如果条件不成立 当前的元素 直接舍弃

li = [1,2,3,4,5,6,7]
res = ['%s+%s'%(y,y)for y in li ]
print(res)  # 输出 ['1+1', '2+2', '3+3', '4+4', '5+5', '6+6', '7+7']
View Code

三、字典生成式

li = [1,2,3,4,5,6,7,8]
d = { i : j for i , j in enumerate(li,1) if  j  != 1}
print(d)  # 输出 {2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8}

四、集合生成式

res = {i for i in range(10) if i != 4}
print(res)  # 输出 {0, 1, 2, 3, 5, 6, 7, 8, 9}

五、生成器表达式

res1 = (i for i in range(10) if i != 4)  # 这样写不是元组生成式 而是生成器表达式
print(res1)
for i in res1:
    print(i)
 '''
输出
<generator object <genexpr> at 0x0000000001E20E08>
0
1
2
3
5
6
7
0
9
'''
View Code

 

posted @ 2019-07-12 17:01  小王八+1  阅读(393)  评论(0)    收藏  举报