首页 > 编程语言 >装饰器补充(算法)

装饰器补充(算法)

时间:2023-06-02 16:44:05浏览次数:32  
标签:补充 res else 算法 key l1 print 装饰 zhongjian

算法之二分法

就是将一个列表或(其他容器)里面的数排列组合,将要找里面的数的时候从中间切分比较留半,然后再重复,最终至找到或者最后切分为空

 1 x = [11, 2, 3, 44, 55, 66, 77, 88, 99, 100, 23, 34, 45, 56, 67]
 2 x.sort()
 3 def bijiao(l):
 4     if len(l) == 0:
 5         print('没有找到这个数。')
 6         return 123
 7 
 8     zhongjian = len(l)//2
 9     if s > l[zhongjian]:
10         l = l[zhongjian+1:]
11         bijiao(l)
12     elif s < l[zhongjian]:
13         l = l[:zhongjian]
14         bijiao(l)
15     else:
16         print('找到了%s'% s)
17 
18 
19 s = int(input('请输入你想要比较的数:'))
20 bijiao(x)

 

三元表达式

当需求功能是二选一的时候,才用三元表达式

语法结构:

条件成立返回 if 前面的值   if 条件 else 条件不成立返回 else 后面的值

1 is_beautiful = True
2 res = '干饭' if 1 > 2 else '学习' if False else '喜欢' if is_beautiful else '不喜欢'

 

列表生成式

在列表每个元素后面添加内容

例:

1 lst = ['a', 'b', 'c', 'd']
2 res = [name + '1' for name in lst]
3 print(res)  # ['a1', 'b1', 'c1', 'd1']
4 
5 res1 = [name + '1' for name in lst if name != 'b']
6 print(res1)   # ['a1', 'c1', 'd1'] if后面不能加else

 

其他生成式

1.字典

将一个列表字典按照索引生成一个字典

1 l = [1, 2, 3]
2 res = {i: j for i, j in enumerate(l)}
3 print(res)   # {0: 1, 1: 2, 2: 3}

 

2.集合

将一个列表字典按照索引生成一个集合

1 l = [1, 2, 3]
2 res = {i for i in l}
3 print(res)   # {1, 2, 3}

 

3.元组(pass)

迭代器

 

匿名函数

 没有名字的函数,就是只有名字和返回值的简化

一般配合采用的内置函数使用

语法格式:

lambda  形参 :返回值

 

1 res = lambda x: x + 1
2 print(res(2))   # 3
3 print((lambda x: x + 1)(2))  # 3

 

常见的内置函数

1.map()(循环)

底层原理就是将容器里的数一个一个传到函数里

1 def a(x):
2     return x + 1
3 
4 
5 l = [1, 2, 3, 4, 5]
6 
7 res = map(a, l)
8 print(res)  # <map object at 0x000001891B2E29D0> 内存地址
9 print(list(res))  # [2, 3, 4, 5, 6]

 

2.zip()(拉链)

将多个元素以对应的索引值,组合成一个元组,以最短的元素为最终长度

1 l = 'hdkcxb'
2 l1 = [4, 5, 7, 8, 's']
3 res = zip(l1, l)
4 print(list(res))  # 需要转变类型,不然会输出内存地址

 

3.max()(取最大值)

按照ASCII取元素内最大的值

 

4.min()(取最小值)

按照ASCII取元素内最小的值

比较字典的v值返回K:

key = 后面只能加函数

1 l1 = {'a': 4, 'b': 5, 'c': 7, 's': 8}
2 print(min(l1, key=lambda key: l1[key]))

 

5.filter (过滤)

将后面元素里面的一个一个提取出来,然后满足前面函数条件的取出来重新组合

1 l1 = [11, 33, 44, 5, 66]
2 print(list(filter(lambda key: key > 30, l1)))    # [33, 44, 66]

 

标签:补充,res,else,算法,key,l1,print,装饰,zhongjian
From: https://www.cnblogs.com/caicaix/p/17450293.html

相关文章

  • 算法刷题记录:日历中的数字
    题目链接https://ac.nowcoder.com/acm/contest/19859/B题目分析很简单的一道数位统计的题目其中年和月是乘法原理。(固定住年和月,枚举该月有几天,所以是乘法原理)当x=0并且month<10时,月需要特判一位数的情况,是加法原理日是加法原理AC代码//Problem:日历中的数字//Cont......
  • 强化学习基础篇【1】:基础知识点、马尔科夫决策过程、蒙特卡洛策略梯度定理、REINFORCE
    强化学习基础篇【1】:基础知识点、马尔科夫决策过程、蒙特卡洛策略梯度定理、REINFORCE算法1.强化学习基础知识点智能体(agent):智能体是强化学习算法的主体,它能够根据经验做出主观判断并执行动作,是整个智能系统的核心。环境(environment):智能体以外的一切统称为环境,环境在与智能体......
  • 强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析
    强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析1.SARSASARSA(State-Action-Reward-State-Action)是一个学习马尔可夫决策过程策略的算法,通常应用于机器学习和强化学习学习领域中。它由Rummery和Niranjan在技术论文“ModifiedConnectionistQ-Learning(MCQL)......
  • 算法题分析:反转整数
    最近刷到了一道medium难度的算法题,比较典型,可以用语法特性和常规解法来解决。题目如下:给定一个32字节的有符号整型数字x,将x反转过来返回。如果反转x会让其数值超出32位有符号整型数字范围[-2^31,2^31-1],那么就返回0。假设运行环境不允许你存储64位整型数字(有符号或者无符号)。......
  • 算法——字符串(一)
    1、给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。1classSolution{2publicintlengthOfLongestSubstring(Strings){3intlen=s.length();4intmax=0;5intright=0;6Set<Character>set=new......
  • 最短路与生成树算法
    写在前面最短路部分的代码还是3月的,奇丑无比,大家见谅……最短路单源最短路径首先我们介绍一些基本概念。由于是单源最短路,我们定义一个起点\(s\),\(dis_u\)表示起点\(s\)到节点\(u\)的最短路长度。一般来讲,对于一条为\(w\)的边\(u\tov\),如果目前的最短路是正确......
  • 代码随想录算法训练营第二十三天|669. 修剪二叉搜索树
    [参考链接]669.修剪二叉搜索树 [代码]1#Definitionforabinarytreenode.2#classTreeNode(object):3#def__init__(self,val=0,left=None,right=None):4#self.val=val5#self.left=left6#self.right=right......
  • python算法学习——第1天
    目录1、3,5,7的倍数判定2、鸡兔同笼3、计算有n个字符串中最长的字符串长度4、输出10个不重复的英文字母5、统计一段文字的单词个数并按字母顺序排序输出6、字典合并7、最大公约数&最小公倍数8、输出全排列9、输出<=n的全部回文数10、重复元素判定1、3,5,7的倍数判定num=int(inp......
  • STL algorithm算法
    Functionsin<algorithm>Non-modifyingsequenceoperations:all_ofTestconditiononallelementsinrange(functiontemplate)any_ofTestifanyelementinrangefulfillscondition(functiontemplate)none_ofTestifnoelementsfulfillconditi......
  • 算法学习day39动态规划part02-62、63
    packageLeetCode.DPpart02;/***62.不同路径*一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。*机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。*问总共有多少条不同的路径?*示例:*输入......