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')]