编程语言
首页 > 编程语言> > Python的三元表达式、列表生成式和字典生成式

Python的三元表达式、列表生成式和字典生成式

作者:互联网

Python的三元表达式、列表生成式和字典生成式

一、三元表达式

  1. 三元表达式的格式

    当功能需求仅仅是二选一的情况下,推荐使用三元表达式

值1 if 条件 else 值2
'''条件成立用值1 不成立用值2'''

    三元表达式在函数中使用

def my_max(a, b):
    if a > b:
        return a
    else:
        return b
def my_max(a, b):
    return a if a > b else b

  2. 示例

is_free = input('is_free>>>:').strip()
is_free = '收费' if is_free=='y' else '免费'

    条件成立采用if前面的值 if 条件 else 条件不成立采用else后面的值

    三元表达式尽量不要嵌套使用

res = '干饭' if 10 > 2 else '不干饭'
print(res)
res = '干饭' if 10 > 2 else ('不管饭' if 2 >5 else '写的啥!')
print(res)
is_free = input('电影是否收费(y/n)>>>:').strip()
if is_free == 'y':
    print('收费')
else:
    print('免费')
print('收费' if is_free == 'y' else '免费')
username = input('username>>>:')
res = 'NB' if username == 'jason' else 'SB'
print(res)

二、列表生成式

  使用频率很高

  1. 列表生成式的格式

[通过条件判断之后的变量名 for 变量名 in 可迭代对象 if 条件]
l = [1,2,3,4,5,6,7]
res = [i+1 for i in l if i != 4] 

    2. 示例

name_list = ['jason', 'kevin', 'tony', 'jerry']
# 给列表中所有的人名加上_DSB后缀
'''传统做法'''
# 1.定义一个空列表
new_list = []
# 2.for循环老列表
for name in name_list:
# 3.生成新的名字
    new_name = '%s_DSB'%name
# 4.添加到新的列表中
    new_list.append(new_name)
    print(new_list)
'''列表生成式'''
res = ['%s_DSB' % name for name in name_list]
print(res)

'''传统做法'''
# 1.定义一个空列表
new_list = []
# 2.for循环老列表
for name in name_list:
    # 3.生成新的名字
    if name == 'jason':
        continue
    else:
        new_name = '%s_DSB'%name
        # 4.添加到新的列表中
        new_list.append(new_name)
print(new_list)
'''列表生成式'''
res = ['%s_DSB' % name for name in name_list if name != 'jason']
print(res)

三、字典生成式

  1. 枚举

enumerate(l,start=1)

    enumerate(l1)

    针对该方法使用for循环取值,每次会产生两个结果。

    第一个是从0开始的数字

    第二个是被循环对象里面的元素

    还可以通过start参数控制起始位置

for i, j in enumerate(l1, start=1):
    print(i, j)

name_list = ['jason', 'kevin', 'tony', 'jerry']
res = {i: j for i, j in enumerate(name_list) if j != 'jason'}
print(res)

res1 = {i for i, j in enumerate(name_list)}
print(res1, type(res1))

  2. 字典

res = { i:j for i,j in enumerate(l)}
# l1 = ['name', 'age', 'hobby']
# l2 = ['jason', 18, 'read']
# new_dict = {}
# for i in range(len(l1)):
#     new_dict[l1[i]] = l2[i]
# print(new_dict)

# count = 0
# for i in l1:
#     print(count,i)
#     count += 1

  3. 集合

res = {i for i,j in enumerate(l)}
# 小括号不是生成式 是迭代器

四、匿名函数

  1. 匿名函数的概念

    没有名字的函数

  2. 匿名函数的语法结构

lambda 形参:返回值

    匿名函数一般不会单独使用,都是配合其他函数一起使用

   3. 示例

print(lambda x:x**2)
def index():
    pass
print(index)
print((lambda x: x ** 2)(2))
res = lambda x: x ** 2
print(res(2))

  4. map()  映射

# map()  映射
# map(函数名,可迭代对象) 结果是一个迭代器
l = [1, 2, 3, 4, 5, 6, 7, 8, 9] def index(n): return n ** 2 print(list(map(lambda x:x**2, l)))

 

标签:name,Python,res,生成式,list,else,print,new,字典
来源: https://www.cnblogs.com/balzac/p/15579015.html