首页 > 编程语言 >Python算法题常用函数记忆清单

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

时间:2024-10-19 19:47:48浏览次数:1  
标签:set Python self list item 算法 key 清单 排序

系统设计题&模拟题链接: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() #初始化方式1
        self.timerecord={}      #初始化方式2

    def checkIn(self, id: int, stationName: str, t: int) -> None:
        self.stationinfo[id] =  (stationName,t)  # id为key,(stationName,t)这个元组tuple为value,不允许用list为key

    def 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,第二个参为访存没中的返回值,默认为None
        self.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)  

 

标签:set,Python,self,list,item,算法,key,清单,排序
From: https://www.cnblogs.com/yhzyl/p/18483302

相关文章

  • Python pip换源
    pip安装源背景在实际开发中,可能要大量使用第三方模块(包),更换至国内下载源,可大幅提升下载速度1、采用国内源,加速下载模块的速度2、常用pip源:--豆瓣:https://pypi.douban.com/simple--阿里:https://mirrors.aliyun.com/pypi/simple3、加速安装的命令:-......
  • python+flask计算机毕业设计在线小说系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的迅猛发展和数字阅读习惯的普及,在线小说系统作为一种新兴的文化传播平台,逐渐成为广大读者获取娱乐和知识的重要途径。近年......
  • jython和python的区别是什么
    我们通常意义上说的python是cpython,也就是完全用C实现的python,它支持C的扩展,不支持java什么的扩展。jython是完全用jython实现的python,它支持用java扩展,貌似无法用C扩展。jython用途比较少。主要在两个场景下:1、操作系统不提供cpython,只有JAVA可以用。比如sun工作站,或者......
  • python如何删除目录
    Python实现删除文件夹的三种方式一、os.rmdir(path)删除目录path,path必须是个空目录,否则抛出OSError异常。import osos.rmdir('./test')  # test是一个空的文件夹二、os.removedirs(path) 递归地删除目录。要求每一级目录都为空,才能递归删除全部目录。子目录被......
  • 考研数据结构-串(串的模式匹配算法)
             串的基本操作可以参照考研数据结构-串(串的基本操作),除去这些基本操作外,还有一个重要的操作就是串的模式匹配算法。模式匹配算法就是,对于一个串中某个子串的定位操作,这里会讲两种模式匹配算法:简单模式匹配算法和KMP算法。一、简单模式匹配算法   简单......
  • 一文带您了解Python中最难理解的7个概念
    ​Python作为一门流行的编程语言,以其简洁和易读性著称。然而,在学习的过程中,有些概念却让许多开发者感到困惑。那么,哪些是Python中最难理解的概念呢?Python中有哪些概念经常让人挠头?如何才能更好地理解这些看似复杂的知识点?随着Python在数据科学、人工智能等领域的广泛应用,开发者......
  • 【数据结构与算法】之二分查找
    二分查找(BinarySearch)是一种在有序数组中查找特定元素的搜索算法。它通过比较数组中间元素与目标值来工作,从而将搜索范围缩小到一半,也称折半查找,是一种非常高效的工作于有序数组的查找算法。本文主要介绍二分查找及其几个变种,包括基础版、改变版、平衡版和Java版,以及Leftmost......
  • 【优选算法】探索双指针之美(一):双指针与单调性的完美邂逅
    文章目录前言:1.盛水最多的容器2.有效三角形个数3.和为s的两个数字4.三数之和5.四数之和最后想说:前言:在上一章中我们已经认识到了双指针,在这章里我们就来探索一下当双指针和单调性遇见后会擦出怎样的火花呢?我们就先来几道例题探索一下吧!1.盛水最多的容器题目......
  • python异常与模块
    1.了解异常什么是异常呢?当检测到一个错误时,python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是我们常说的bug像这样,计算机会告诉你出错的是哪一行代码以及出现错误的问题所在FileNotFoundError:文件未找到Nosuchfileordirectory:文......
  • python 代码实例 --- GUI 登录界面
    importsysfromPyQt5.QtWidgetsimportQApplication,QWidget,QLabel,QLineEdit,QPushButton,QVBoxLayout#type:ignoreclassLoginWindow(QWidget):def__init__(self):super().__init__()self.init_ui()definit_ui(self):......