系统设计题&模拟题链接:https://leetcode.cn/problem-list/design/
字符串操作
splite 按指定分隔符转成 list
str_list= text.split() # 默认按空格分割 (函数写在后面,用 . 来调用)
str_list= text.split(",") # 按逗号分割
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 列表
字典 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)