首页 > 其他分享 >三元表达式以及内置函数

三元表达式以及内置函数

时间:2022-10-13 21:47:39浏览次数:52  
标签:内置 name res list 算法 l1 print 三元 表达式

  • 算法简介及二分法
  • 三元表达式
  • 各种生成式
  • 匿名函数
  • 重要内置函数
  • 常见内置函数

今日内容详细

算法简介及二分法

1.什么是算法
	算法就是解决问题的有效方法 不是所有的算法都很高效也有不合格的算法
2.算法应用场景
	推荐算法(抖音视频推送 淘宝商品推送)
	成像算法(AI相关)......
 	几乎涵盖了我们日常生活中的方方面面
3.算法工程师要求
	待遇非常好 但是要求也非常高
4.算法部门
	不是所有的互联网公司都养得起算法部分 只有大型互联网公司才有
	算法部门类似于药品研发部分
5.二分法
	是算法中最简单的算法 甚至都称不上是算法
 """
 二分法使用的要求:
 	待查找的数据必须有序
 二分法的缺陷:
 	针对查找开头或者结尾的数据,查找效率很低
 常见算法的原理以及伪代码:
 	二分法、冒泡、快拍、插入、堆排、桶排、数据结构(链表 约瑟夫问题 如何链表是否成环)
 """
l1 = [12, 21, 32, 43, 56, 76, 87, 98, 123, 321, 453, 565, 678, 754, 812, 987, 1001, 1232]
# 查找列表中某个数据值
# 方式1:for循环直到找到这个值
# for i in l1:
#     if i == 987:
#         print('找到987')
# 方式2:二分法,不断的对数据集做二分切割
"代码实现二分法"


# 定义我们想要查找的数据值
# seek_num = 987
def index(a, b):
    middle_num = len(a) // 2  # 先看赋值右边,查看列表l1的数据有多少个,然后将这个个数进行整除赋值给右边
    if len(a) == 0:
        print('抱歉没找到')
        return
    if b > a[middle_num]:  # 用987这个数据值跟列表索引中间的数据值比对
        middle_pluse_num = a[middle_num + 1:]  # 这句话是将列表l1按照中间的值切割,并赋值给右边的变量名
        return index(middle_pluse_num, b)  # 继续调用函数
    elif b < a[middle_num]:  # 用987这个数据值跟列表索引中间的数据值比对
        middle_pluse_num = a[:middle_num]  # 赋值左边表示切割l1从0开始到中间结束不包含最后一个
        return index(middle_pluse_num, b)  # 继续调用函数
    else:
        print('找到987')
index(l1, 987)

三元表达式

简化步骤1:代码简单并且只有一行,那么可以直接在冒号后面写编写
name= 'jason'
# if name == 'jason':
#     print('老师')
# else:
#     print('学生')
# 三元表达式
res = '老师' if name == 'jason' else '学生'
print(res)
"""
数据值1  if条件  else 数据值2
条件成立则使用数据值1 条件不成立则使用数据值2

当结果是二选一的情况下,使用三元表达式较为简便并且不推荐多个三元表达式嵌套
"""

各种生成式

name= 'jason'
if name == 'jason':
    print('老师')
else:
    print('学生')
三元表达式
res = '老师' if name == 'jason' else '学生'
print(res)
name_list = ['jason', 'kevin', 'oscar', 'tony', 'jerry']
给列表所有人名的后面加上_NB的后缀
方法一:for循环
定义一个新的列表
new_list = []
for i in name_list:  # fou循环获取每一个数据值
    new_list.append(f'{i}_NB')  # 这里用到了列表尾部添加内置方法,format格式化输出
print(new_list)
方法二:列表生成式
new_list = [name + 'NB' for name in name_list]  # 中括号内先循环获得name然后指定前面的name+NB,以列表的形式出现
print(new_list)
name_list = [name + '大老婆' for name in name_list]
print(name_list)
new_list = ['大老婆'if i == 'jason' else '小老婆'for i in name_list if i != 'jason']
print(new_list)


字典生成式
s1 = 'hello word'
for i, j in enumerate(s1, start=50):
    print(i, j)
d1 = {i: j for i, j in enumerate('hello', start=100)}
print(d1)
集合生成式
set = {i for i in 'hello'}
print(set)

匿名函数

没有名字的函数  需要使用关键字lambda
语法结构
	lambda 形参:返回值
使用场景
	lambda a,b:a+b
匿名函数一般不单独使用,需要配合其他函数一起用

常见内置函数

1.map() 映射
l1 = [1, 2, 3, 4, 5]
def func(a):
        return a + 1
res = map(func, l1)
for i in res:
    print(i)
# for循环的方式
for i in l1:
    i += 1
    print(i)
2.max()\min()
# l1 = [11, 22, 33, 44]
# res = max(l1)  # max用来判断最大值赋值给变量名res
# print(res)
d1 = {
    'zj': 100,
    'jason': 8888,
    'berk': 99999999,
    'oscar': 1
}
def func(a):
    return d1.get(a)
res = max(d1, key=lambda k:d1.get(k))
# res = max(d1, key=func)
print(res)
3.reduce
reduce 传多个值,返回一个值
from functools import reduce

l1 = [11, 22, 33, 44, 55, 66, 77, 88]
res = reduce(lambda a, b: a * b, l1)  # 一次性取俩值
print(res)

作业

# 有下列用户数据
user_data = {
    '1': {'name': 'jason', 'pwd': '123', 'access': ['1', '2', '3']},
    '2': {'name': 'kevin', 'pwd': '321', 'access': ['1', '2']},
    '3': {'name': 'oscar', 'pwd': '222', 'access': ['1']}
}

# 直接先写装饰模板.0
enter_is = False  # 定义一个全局变量


def outer_pluse(a):
    def outer(func_name):
        def inner(*args, **kwargs):
            global enter_is  # global作用是局部可以修改全局变量
            if enter_is:
                if a in user_data.get(enter_is).get('access'):
                    res = func_name(*args, **kwargs)
                    return res
                else:
                    print('您暂时没有该权限')
                    return
            username = input('请先登录您的账号>>>:').strip()
            password = input('请输入您的密码校验权限>>:').strip()
            for i in user_data:
                if username == user_data.get(i).get('name') and password == user_data.get(i).get('pwd'):  # 判断用户名密码
                    print('用户名密码校验成功')
                    enter_is = i  # 修改全局变量,这样不用再次登录
                    if a in user_data.get(i).get('access'):
                        res = func_name(*args, **kwargs)
                        return res
                    else:
                        print('您没有该权限')

            else:
                print('账号或密码错误')
                return

        return inner

    return outer


# 并有三个函数
@outer_pluse('1')
def func1():
    print('func1')


@outer_pluse('2')
def func2():
    print('func2')


@outer_pluse('3')
def func3():
    print('func3')


func_dict = {'1': func1,
             '2': func2,
             '3': func3}
while True:
    print("""
    1.执行函数 func1
    2.执行函数 func2
    3.执行函数 func3
    """)
    choise = input('请输入您想要执行的参数>>>:').strip()
    func_dict.get(choise)()

标签:内置,name,res,list,算法,l1,print,三元,表达式
From: https://www.cnblogs.com/zhanghong1229/p/16789784.html

相关文章

  • 二分法及常见内置函数(部分)
    昨日内容回顾多层语法糖的顺序语法糖多层使用时,从被装饰的函数开始由下而上读取,由上而下执行。有参装饰器有参装饰器可以为装饰器提供额外的参数。defwrapper(pa......
  • 匿名函数,二分法,三元表达示
    算法简介及二分法1.什么是算法 算法就是解决问题的有效方法不是所有算法都很高效也有不合格的算法2.算法应用场景 推荐算法:比如抖音成像算法:AI相关几乎覆......
  • 算法、表达式与匿名函数
    算法简介1.什么是算法 算法就是解决问题的有效方法不是所有的算法都很高效也有不合格的算法2.算法的应用场景 推荐算法(抖音视频推送淘宝商品推送)成像算法(AI......
  • 二分法、三元表达式及匿名函数
    二分法、三元表达式及匿名函数目录二分法、三元表达式及匿名函数一、算法简介及二分法二、三元表达式三、各种生成式1.列表生成式2.字典生成式3.集合生成式4.元组四、匿名......
  • 算法 生成式 函数内置
    今日内容概要算法简介及二分法三元表达式各种生成制匿名函数重要内置函数常见内置函数算法简介及二分法1.什么算法? 解决问题的有效方法,不是所有的算法都是高效......
  • 算法、三元表达式、匿名函数
    算法、三元表达式、匿名函数目录算法、三元表达式、匿名函数一、算法简介1、算法的概念2、算法的应用场景二、二分法1、二分法查找思路2、二分法使用要求三、三元表达式四......
  • C++ 使用栈求解中缀、后缀表达式的值
    1.前言表达式求值对于有知识积累的你而言,可以通过认知,按运算符的优先级进行先后运算。但对计算机而言,表达式仅是一串普通的信息而已,需要通过编码的方式告诉计算机运算法......
  • 算法简介与函数表达式跟内置函数
    今日内容总结算法简介及二分法1.什么是算法算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机......
  • 算法简介及二分法,三元表达式,各种生成式,匿名函数,常见内置函数
    目录算法简介及二分法,三元表达式,各种生成式,匿名函数,常见内置函数今日内容概要今日内容详细算法简介及二分法三元表达式各种生成式/表达式/推导式匿名函数常见内置函数算法......
  • 算法表达式匿名函数
    目录算法简介与二分法二分法常见算法的原理以及伪代码三元表达式各种生产式、表达式、推导式匿名函数常见内置函数作业算法简介与二分法1.什么是算法 算法就是解决问题......