python刷题常用数据结构api整理

640 阅读2分钟

1.Number类型

int,float,complex
运算符号:+ - * / // %(其中//是整数除)
函数:abs(),max(x1,x2,...),min(),pow(x,y),math.sqrt(x)

2.List列表

查找:a[0]
增加:a.append()
修改:a[0] = 9
删除:a.pop(index)返回删除的值  a.pop()不加索引默认返回最后一个值
常用函数:len(a),max(a),min(a),a.reverse(),a.clear()
切片操作
迭代遍历:
	(1) for x in a:
			print(x)
	(2) for i in range(len(a)):
			print(a[i])
列表表达式:
	b = [i*i if i>3 else i for i in a]
和数字乘:
	c = [0]*5  ===>  c = [0,0,0,0,0]
	

3.Tuple元组

小括号括起来,只能查,不能增删改
常用函数:len(),max(),min()
切片操作
迭代遍历,同List

4.Set集合

a = {1,1.5,"abc"},大括号括起来
元素唯一,无序
增加:a.add(2),a.update({4,5})
删除:a.remove(1.5)
函数:lenmaxmin
集合运算:
	a - b: 差集
	a | b: 并集
	a & b: 交集
	a ^ b: ab不同时有的元素

5.Dictionary字典

查找:dict[key]返回对应的value
增加:dict[newkey] = newvalue
修改:dict[key] = newvalue
删除:dict.pop(key)
遍历:
	(1) 遍历key
		for key in dict:
			print(key)
	(2) 遍历value
		for value in dict.values():
			print(value)
	(3) 遍历key和value
		for k,v in dict.items():
			print(k,v)
			

6.String字符串

s = "hello world"
查找:s[0] = 'h';s[-1] = 'd'
切片操作同list
常用函数:len(s),max(s),min(s);s.count('h')返回多少个'h',  
          s.isupper(),s.islower(),s.isdigital(),s.lower(),s.upper(),
          s.strip()去空格,s.lstrip()去左边的空格,s.rstrip(),
          s.swapcase()大写转小写,小写转大写, 
          s.replace(old,new),
          s.split(str)以str符号来分割原有的字符串并返回一个列表

7.Array数组

用List来表示

8.Linkedlist链表

class ListNode:
	def _init_(self,x):
		self.val = x
		self.next = None

9.Hash Table哈希表

用Dictionary实现

10.Queue队列

1)可以用List来模拟,append()在尾部添加元素,pop(0)弹出第一个元素。但比较麻烦的是在
    pop后,List底层实现的时候后面的元素会依次向前移动一个位置,比较费时。
2)利用内置的deque这个双端队列的结构:from collections import deque
	常用的函数示例:q = deque([1,2,3])
                        q.append(4) #在尾部添加元素
                        q.pop() #弹出尾部的元素
                        q.appendleft(9) #在头部添加元素
                        q.popleft() #弹出头部的元素

11.Stack栈

1)也可以用deque来实现
2)用list更方便,因为不需要像queue一样移位

12.Heap堆(java中叫做优先队列)

from heapq import heapify,heappush,heappop,nlargest,nsmallest
a = [10,2,3,1,7]
heapify(a) #将列表变成小堆,并不会返回什么,是在列表本身上操作的
print(a)

heappush(a,4)
print(a)

heappop(a)
print(a)

print(nlargest(2,a)) #返回a中最大的两个值
print(nsmallest(3,a)) #返回a中最小的两个值

[注]:最大堆的时候,将列表a中的每个元素乘-1,再用最小堆做,最后再还原

13.Tree树