0. python Q&A

0.2 range

range(stop)
range(start, stop)
range(start, stop, step)

参数说明:

  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);

  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

1) list

python中的列表可以混合存储任意数据类型,因为列表中存的是元素的内存地址,而不是元素的值,

比如有列表li = [1, True, 'hello', {'k': 'v'}]。

li中的元素在内存中并不是连续存储的,因此li存储这些元素所在的内存地址,对元素取值时,先在列表中找到元素的内存地址,再通过内存地址找到元素

img

列表没有长度限制是如何实现的呢?当我们通过append方法向列表中添加元素时,如果列表满了,那么新申请2倍于原来列表的内存地址,并将原列表的值拷贝到新的内存地址中。

list:链表,有序, 通过索引进行查找,使用方括号”[]”;

倒序访问:A[-1]

增:append(): 添加到尾部,insert()方法添加到指定位置(下标从0开始)

​ extend()

​ +

​ list1=[1, 2, 3] .list2=[4, 5, 6]

list1.append(list2) = [1, 2, 3, [4, 5, 6]]

list1.extend(list2) = [1, 2, 3, 4, 5, 6]

List1 + list2 = [1, 2, 3, 4, 5, 6]

删:pop()删除最后尾部元素,也可以指定一参数删除指定位置

2) stack

后进先出(last-in, first-out)

栈的基本操作:

定义: stack = []

  1. 进栈:append

  2. 出栈:pop()

  3. 查看栈顶:stack[-1] 直接取索引

3) deque

Python的deque模块可以实现队列,并且支持双向队列:

4) 链表

区别与数组/列表:数组和列表是连续存储的,删除和插入元素,其它元素需要补过去或者后移,时间复杂度是O(n);

而链表则不会这样,它的时间复杂度是O(1)

5) dict

字典,字典是一组键(key)和值(value)的组合,通过键(key)进行查找,没有顺序, 使用大括号”{}”;

6) set

:集合,无序,元素只出现一次, 自动去重,使用”set([])”

add(x)和remove(x)

0.4 str,list,set间的转换

0.5 setdefault() and get()

dict.setdefault(key, default=None)–> 有key获取值,否则设置 key:default,并返回default,default默认值为None

dict.get(key, default=None)–> 有key获取值,否则返回default。default默认值为None。

0.6 string split()

参数

  • str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。

  • num -- 分割次数。默认为 -1, 即分隔所有

0.7 input, output

0.8 sort(key=lambda, reverse = True)

sort()与sorted()的不同在于,sort是在原位重新排列列表,而sorted()是产生一个新的列表。

0.9 heapq.nlargest(n, key=None),heapq.nsmallest(n, key=None)

数组中的第K个最大元素

当要查找的元素个数相对比较小的时候,函数 nlargest() 和 nsmallest() 是很合适的。如果你仅仅想查找唯一的最小或最大(N=1)的元素的话,那么使用 min() 和max() 函数会更快些。类似的,如果 N 的大小和集合大小接近的时候,通常先排序这个集合然后再使用切片操作会更快点(sorted(items)[:N] 或者是 sorted(items)[-N:])。需要在正确场合使用函数 nlargest() 和 nsmallest() 才能发挥它们的优势(如果N 快接近集合大小了,那么使用排序操作会更好些)。

0.10 collections

deque

defaultdict

counter

0.11 substring, subarray, subsequence

substring, subarray: continuous, in order

subsequence: not continuous, in order

0.12 map()

0.13 Python ASCII码与字符相互转换

Last updated