ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-11-19 20:35:15  阅读:140  来源: 互联网

标签:name Python res 生成式 list else print new 字典


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有