Python算法题常用函数记忆清单

news/2024/10/19 20:03:05
系统设计题&模拟题链接:https://leetcode.cn/problem-list/design/

字符串操作

splite 按指定分隔符转成 list

str_list= text.split()  # 默认按空格分割 (函数写在后面,用 . 来调用

str_list= text.split(",")  # 按逗号分割 

strip()去除两边的空格

trimmed_text = text.strip()  # 去除两端的空格 (函数写在后面,用 . 来调用

join把list转成字符串输出,是把分割符写在变量前面

# 假设我们有一个包含整数的列表
my_list = [1, 2, 3, 4, 5]

# 以空格分割,将整数转换为字符串,输出: '1 2 3 4 5'  
my_string = ' '.join([str(i) for i in my_list])



list 列表

 a = list()  或者  a = [] --初始化
 list.append(x) --尾部添加元素x
 x = list.pop(-1) --尾部移除元素并赋值给x,默认参数-1,索引值,0的话则pop首元素
 
list降序排序:
my_list.sort(reverse=True) 或者 sorted_list = sorted(my_list, reverse=True) 
 

字典 Dictionary,也称散列表,hashmap

以leetcode 1396为例

重点记忆:初始化,dic[key] 索引访问value,value = dic.get(key,None)

class UndergroundSystem:def __init__(self):self.stationinfo=dict() #初始化方式1self.timerecord={}      #初始化方式2def checkIn(self, id: int, stationName: str, t: int) -> None:self.stationinfo[id] =  (stationName,t)  # id为key,(stationName,t)这个元组tuple为value,不允许用list为keydef checkOut(self, id: int, stationName: str, t: int) -> None:# self.stationinfo[id] = [stationName,t]
       starttime = self.stationinfo[id][1] #查表找入站时间,第二维度01用来表示元组索引startstation = self.stationinfo[id][0] # 查表找入站名称# if self.timerecord[[startstation,stationName]] == None: #不能用不可hash的list做key,下面换成tuple正解#     self.timerecord[[startstation,stationName]] = {0,0}
tmp = self.timerecord.get((startstation,stationName),(0,0)) #字典get的写法,第一个参为key,第二个参为访存没中的返回值,默认为Noneself.timerecord[(startstation,stationName)] = (tmp[0]+t-starttime,tmp[1]+1) #{‘起点站’,‘终点站’} = {原来总时间+新乘客时间,乘客数量+1}def getAverageTime(self, startStation: str, endStation: str) -> float:timeAmount,touristNum = self.timerecord[(startStation,endStation)]return timeAmount/touristNum if touristNum>0 else 0

上面变量里的值长下面这样:

字典的补充 

自定义的排序键(key)来对字典进行排序。字典值是包含三个元素的数组,按照先第二个数,再第一个数,最后第三个数的顺序对字典进行排序。

# 示例字典  
data = {  'a': [1, 2, 3],  'b': [4, 1, 6],  'c': [7, 5, 8],  'd': [1, 3, 2]  
}  # 自定义排序键对字典进行排序,说白就是给list排序,根据里面tuple的value这个list的元素索引排序
sorted_data = dict(sorted(data.items(), key=lambda item: (item[1][1], item[1][0], item[1][2])))  # 输出排序后的字典  
print(sorted_data)

上面例子中:

1. data.items() 以列表返回可遍历的(键, 值) 元组数组,每个项是一个 (k, v) 对。

2. sorted() 函数用于对这些项进行排序。

3. key=lambda item: (item[1][1], item[1][0], item[1][2]) 定义了一个排序键,其中 item[1] 是字典的值(即包含三个元素的列表),item[1][1] 是列表中的第二个元素,item[1][0] 是列表中的第一个元素,item[1][2] 是列表中的第三个元素。

 

set 集合(元素唯一但无序)

初始化:parame = {value01,value02,...} 或者 set(value),注意与字典区分

增:set.add(x) 添加元素,重复则略过

删:

s.remove(x)  --元素不存在,则会发生错误

s.discard(x)   --不会报错,强烈建议用这个!!

改:删了再增?

查: if a in set: True则表示a在set里 

 

set转list直接:list(set)即可;

set转list并排序的话:sorted_list = sorted(set)  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/73558.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

USB协议详解第14讲(USB传输-同步传输及事务组成)

1.前言 前面讲过USB一个传输由多个事务组成,一个事务由多个包实体组成。传输又分为控制传输、同步传输、批量传输、中断传输四种,上一节我们讲了控制传输细节及事务组成,今天我们主要讲解同步传输及事务组成。 同步传输用在数据量大、对实时性要求高的场合,例如音频设备、视…

30天自制操作系统(一)启动区

一、启动区ORG 0x7C00JMP entryDB 0x90DB "HELLOIPL"DW 512DB 1DW 1DB 2DW 224DW 2880DB 0xf0DW 9DW 18DW 2DD 0DD 2880DB 0,0,0x29DD 0xffffffffDB "HELLO-OS "DB "FAT12 "RESB 18entry:MOV AX, 0MOV SS, AXMOV SP,…

USB协议详解第13讲(USB传输-控制传输及事务组成)

1.前言 前面讲过USB一个传输由多个事务组成,一个事务由多个包实体组成。传输又分为控制传输、同步传输、批量传输、中断传输四种,今天我们主要讲解控制传输三个阶段及事务组成。 控制传输是一种特殊的传输方式,且传输过程相对复杂一些,但十分重要。当USB设备初次连接主机时…

图片隐写的几大思考方向

一、看文件类型 特别是gif文件,可以用stegsolve的Frame Browser逐帧查找看有无flag线索题目链接:https://buuoj.cn/challenges#/金三胖 二、想这几个方向 (1)Stegsolve方向 对应方向:LSB、滤镜查找 ①LSB 1.选Analyse/Data Extract2.勾选以下设置3.点Preview,发现里面出现…

DEDE文章{dede:pagebreak/}翻页错位的解决方法

问题描述 在使用DEDE的 {dede:pagebreak/} 标签进行文章分页时,点击下一页后,文章内容会错位,出现在层外面。 解决方法检查文章中的HTML结构问题可能是因为文章内容中包含 div 层,而这些 div 层在分页时会导致布局错乱。 解决方法:将文章中的 div 层替换为 p 标签。<p&…

怎样修改公司网站的资料?网站怎么在后台修改文字?

修改公司网站的资料通常涉及以下几个步骤,具体操作可能会根据网站的技术栈和管理后台的不同而有所差异:登录管理后台:使用管理员账号登录到公司网站的管理后台。这通常是通过网站上的“登录”或“管理”链接进入。导航至编辑页面:在管理后台中找到需要修改的内容对应的编辑…

如何修改网站指定模板?网站怎么修改密码?

修改网站指定模板通常涉及以下几个步骤,具体操作可能会根据使用的网站构建工具或平台(如WordPress, Joomla, Drupal等)有所不同:备份当前模板:在进行任何修改之前,确保备份当前正在使用的模板文件和数据库。这可以防止在修改过程中出现错误导致网站无法正常访问。选择编辑…

判断隐写的第一步:识别文件类型

遇到不给文件后缀的文件题目,使用TrIDNET工具进行分析可以快速得出文件结果