python基础-day19-三元表达式-生成式-匿名函数

今日学习

三元表达式

各种生成式

匿名函数

重要内置函数

常见内置函数

三元表达式

三元表达式:仅限于二选一的情况并不建议嵌套使用

  • 三元表达式结构

值1 if 条件 else 值2

如果if后面的条件成立,则使用if 前面的值

如果if后面的条件不成立,则使用else后面的值

1.获取用户输入的用户名,如果是jason就打印欢迎,否则就打印滚蛋

username = input('username>>>:').strip()
if username == 'jason':print('欢迎')
else:print('滚蛋')
-----------------------------方式2------------------------
三元表达式
username = input('username>>:').strip()
print ('欢迎') if username == 'jason' else print('滚蛋')

ps:在python中代码不是精简的越少越好 在精简的过程中还要保证代码的可读性

2.编写一共函数,比较两个数的大小,返回较大的哪个

----------------------------
def my_max(a, b):
    if a > b:
        return a
    else:
        return b
res = my_max(1,10)
print(res)

----------------第二种---------------
def my_max(a, b):
    return a if a > b else b
	#值1   if 条件 else 值2
res = my_max(1,10)
print(res)

各种生成式

---------------例---------------------------

name_list = ['jason','kevin','oscar','jerry','tony']
#给上述列表种所有数据值加上NB的后缀
#1.定义一个新的列表
new_list = []
#循环原列表种所有的数据
for name in name_list:
#拼接_Nb后缀
    new_name = name + '_Nb'
#追加到新列表中
    new_list.append(new_name)
print(new_list)
---------------列表生成式---------------------
new_list = [name + '_NB' for name in name_list]先执行for循环,然后将一个个的数据值交给for循环前面处理
print(new_list)

--------------字典方式-------------
new_dict = {i:'jason' for i in range(10) if i == 6}
print new_dict

--------------集合生成式------------
new_set = {i for i in range(10) if i == 6}
print(new_set)

--------------元组生成式---------------
!哈哈哈,没想到吧,他没有所谓的生成式。它是后面的迭代器知识/
不信?
new_tuple = (i for i in range(10))
print(new_tuple) 
-------------结果-------------------------
<generator object <genexpr> at 0x000001E62B8ED740>

匿名函数

匿名函数就是没有函数名的函数
语法结构
lambda 形参:返回值
(lambda x: x + 1)(123)  直接调用
res = lambda x: x + 1  命名调用
print(res(123))
应用场景
	匿名函数通常都需要配合其他函数一起使用 用于减少代码

匿名集合内置函数使用

max() # 求最大值
l1 = [223, 3423, 123, 24, 34, 35, 435, 3, 24, 3534, 53, 24, 234, 132, 4234, 456, 456, 5345, 4, 234, 345, 23, 2123432]

res = max(l1)
print(res)
-----结果------
#212432


------------例2----------------------
匿名函数和内置函数使用
def index(k):
    return dic.get(k)
# res = max(dic, key=lambda k: dic.get(k))
res = max(dic, key=index)
print(res)  # Bason
  • 重要内置函数

内置函数 作用
min() 返回给定参数的最小值,参数可以为序列
max() 最大值
map() 映射
filter() 过滤,返回结果是一个列表
reduce() 将很多单体 变成一个整体
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
  • mini语法

    min( x, y, z, .... )
    x,
    y,
    z,
    数值表达式
    #例子参考下 max()
    
  • map()

  • map()是python的内置函数,根据提供的函数对指定序列做映射
    
    语法:map(func,iter,)
    ----同样可以用匿名函数表达式
    map = (lambda x:x + 1,l1)
    
    l1 = [11, 22, 33, 44, 55, 66]
    #列表内所有数据值加20
    res = map(lambda x:x + 20, l1)   
    print(list(res))
    -----------结果-----------
    [31, 42, 53, 64, 75, 86]
    
    ----------结果-------
    也可以跟两个参数
    a= [1,2,3,4]
    b= [1,2,3,4]
    c= map(lambda x,y : x+y -)
    
  • filter()

  • filter() 过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表,该接受两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回True或者False,m最后返回True的元素
    
    l1 = ['jason','kevin','oscar','tony']
    #将jason移除
    res = filter(lambda x: x != 'jason',l1)
    print(list(res))
    -----------结果------------
    ['kevin', 'oscar', 'tony']
    
  • reduce()

  • reduce()高阶函数,reduce()函数接受的参数和map()类似,一个函数f,一个list,但是行为和map不同
    reduce()传入的函数f必须位两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果
    
    #reduce
    l2 = [2,3,4]
    from functools import reduce
    res = reduce(lambda x,y: x*y, l2,3)
    print(res)
    -----------结果------------
    72
    -------reduce总结--------
    调用reduce(f,[2,3,4]) reduce()做如下计算
    先计算头两个元素f(2,3)结果为6
    再把结果和第三个元素计算f(6,4)结果为24
    再把结果和第四个元素计算f(24,3)
     由于没有更多的元素了,计算结束,返回结果72
    
  • zip

  • zip()函数用于可迭代的对象作为参数,主要功能将对象对应的元素打包成一个个元组,然后把这些元组组成一个列表
    
    语法:zip([iterable,....])
    参数:itera是一个或者多个可以迭代的对象
    
    #zip
    n1 = [1,2,3]
    n2 = ['jason','kevin','oscar']
    n3 = ['l','z','l','g']   #多余的g会被丢弃
    res = zip(n1,n2,n3)
    print(list(res))
    ---------执行结果--------------
    [(1, 'jason', 'l'), (2, 'kevin', 'z'), (3, 'oscar', 'l')] 
    
posted @ 2022-07-07 19:28  名字长的像一只老山羊  阅读(79)  评论(0编辑  收藏  举报