Python一些常用操作
intervals.sort(key=lambda p: p[0])
LC 189 [:]切片操作
dict
|
|
LC 49
defaultdict
defaultdict(int) 更适合一般的需要“键不存在时给默认值”的场景,不一定都是计数。
|
|
Counter
Counter 更适合对可迭代对象做频次统计、出现次数分析等,它自带的计数方法可以让实现许多场景更为简洁。Counter(p)表示从一个iterable创建计数器。
Iterable: list, tuple, str, dict, set, range, enumerate, map
del cnt[x] 删除对于x的计数。len(cnt)获取一共给几个元素计数。
新建一个 Counter
|
|
list
index()
|
|
sort()
它直接在原列表上进行排序操作,不创建新的列表。只能应用于列表。
字符串比较大小
与长度无关
|
|
iterable
Iterable: list, tuple, str, dict, set, range, enumerate, map sorted(iterable)返回一个新的已排序列表。原始的可迭代对象不会被修改。时间复杂度为O(nlogn)
deque = collections.deque()
ACM模式
zip
|
|
输出: [(‘Alice’, 90), (‘Bob’, 85), (‘Charlie’, 88)]
heapq
|
|
对于单个元素:如果元素是可比较的(例如整数、浮点数等),那么堆会根据元素的大小进行排序,最小的元素位于堆顶。
对于元组元素:当元素是元组时,堆会首先比较元组的第一个元素。如果第一个元素相等,再比较第二个元素,以此类推。在你给出的代码中,压入堆的元素是 (value, key) 元组,堆会根据 value(即元素出现的频率)进行排序,value 最小的元素位于堆顶。
heapify(pq) 的作用是将任意列表转换为合法的最小堆,时间复杂度为 O (n)。
转换后:
pq[0] 是最小值。
其他元素的位置满足堆性质,但不保证整体有序。
除法
python3 的地板除 “//” 是整数除法, “-3 // 2 = -2” ;向下取整
python3 的除法 “/” 是浮点除法, “-3 / 2 = -1.5” ;
而其他语言的除法是向零取整。在 Python 中要这样写:
int(a/float(b))
这里的 int 取整,是向零取整
负数
isdigit()无法判断负数,应该这样判断:
x.lstrip(’-’).isdigit()
注意如果想改变 x, 需要用 x=x.lstrip(c)
sort
|
|
- 前K个高频单词
Complexity
heap
heapify: Time: O(k)
heapq.heappush: Time&Space: O(logK)
Recursion
merge sort: T(n)=2T(n/2)+T(n)=T(nLogn)
S(n)=S(logn)
LC 23: T(k)=2T(k/2)+O(n)=T(nLogK)
Sorted List
- 插入 / 删除操作:SortedList 的时间复杂度是 O (log n)
- SortedList 支持 O (1) 时间复杂度的随机访问
|
|
矩阵的深拷贝
result = [row[:] for row in matrix]