系統設計題&模擬題連結: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() #初始化方式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)