笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~
1.数字类型:
2.布尔类型(bool):
3.字符串类型(str):
4.列表类型(list):
5.元组类型(tuple):
6.集合类型(set):
7.字典类型(dict):
列表类型(list)
class ListNode:
def __init__(self,x):
self.val = x
self.next = None
字典类型(dict)
进队:append()
出队:pop(0)
l = [1,2,3,4,5]
l.append(6)
l
#[1, 2, 3, 4, 5, 6]
l.pop(0)
l
#[2, 3, 4, 5, 6]
deque
是 Python 中的一个内置模块 collections
中的类,用于实现双端队列(double-ended queue)。双端队列是一种具有队列和栈特性的数据结构,支持在两端进行插入和删除操作。
deque
提供了以下常用操作:
deque()
函数创建一个空的双端队列。from collections import deque
,d = deque()
。append(item)
在队列的右端插入一个元素。appendleft(item)
在队列的左端插入一个元素。d.append(1)
,d.appendleft(2)
。pop()
删除并返回队列右端的元素。popleft()
删除并返回队列左端的元素。d.pop()
,d.popleft()
。[-1]
索引访问队列右端的元素。[0]
索引访问队列左端的元素。d[-1]
,d[0]
。len(d)
获取队列中的元素个数。not d
或 len(d) == 0
判断队列是否为空。deque
还支持其他一些方法,如旋转队列、计数元素出现次数、反转队列等。双端队列在实际应用中常用于需要高效地在两端进行插入和删除操作的场景,比如实现缓存、任务调度等。
右进:append()
右出:pop()
左进:appendleft()
左出:popleft()
from collections import deque
q = deque([1,2,3])
q.append(4)
q
#deque([1, 2, 3, 4])
q.pop()
q
#deque([1, 2, 3])
q.appendleft(4)
q
#deque([4, 1, 2, 3])
q.popleft()
q
#deque([1, 2, 3])
使用:先进后出
#使用方法1:队头<--- 队列 <---队尾
#append() 队尾
#popleft() 队头
from collections import deque
q = deque([1,2,3])
q.append(4)
q
#deque([1, 2, 3, 4])
q.popleft()
q
#deque([2, 3, 4])
#使用方法2:队尾---> 队列 --->队头
#appendleft() 队尾
#pop() 队头
from collections import deque
q = deque([1,2,3])
q.appendleft(4)
q
#deque([4, 1, 2, 3])
q.pop()
q
#deque([4, 1, 2])
进栈:append()
出栈:pop()
l = [1,2,3,4,5]
l.append(6)
l
#[1, 2, 3, 4, 5, 6]
l.pop()
l
#[1, 2, 3, 4, 5]
右进:append()
右出:pop()
左进:appendleft()
左出:popleft()
使用:先进先出,后进后出
heapq
是 Python 中的一个内置模块,提供了堆(heap)算法的实现。堆是一种特殊的树形数据结构,满足以下性质:
Python 中的 heapq
模块提供了以下常用函数:
heapify(iterable)
:
heapq.heapify([3, 1, 4, 1, 5, 9])
。heappush(heap, item)
:
heapq.heappush([3, 1, 4, 1, 5, 9], 2)
。heappop(heap)
:
heapq.heappop([1, 1, 3, 4, 5, 9])
。heapreplace(heap, item)
:
heapq.heapreplace([1, 1, 3, 4, 5, 9], 2)
。nlargest(n, iterable[, key])
:
heapq.nlargest(3, [1, 2, 3, 4, 5, 6, 7, 8, 9])
。nsmallest(n, iterable[, key])
:
heapq.nsmallest(3, [9, 8, 7, 6, 5, 4, 3, 2, 1])
。heapq
模块可以用于实现堆排序、优先队列等算法,同时也可以用于解决一些常见的算法问题,如求 top-k 问题、求中位数等。在使用 heapq
模块时,需要注意元素的比较方式,可以通过传递 key
参数来指定比较函数。
from heapq import *
a = [1,2,3,4,5]
heapify(a)
a
#[1, 2, 3, 4, 5]
heappush(a,-1)
a
#[-1, 2, 1, 4, 5, 3]
heappop(a)
a
#[1, 2, 3, 4, 5]
nlargest(3,a)
#[5, 4, 3]
nsmallest(3,a)
#[1, 2, 3]
abs(-5)
#5
max(1,3,6)
#6
min(1,-1,4)
#-1
pow(3,3)
#27
import math
math.sqrt(9)
#3.0
bool(0)
#False
bool(2)
#True
bool(-1)
#True
s="Hello world"
len(s)
#11
max(s)
#'w'
s.count("l")
#3
s.isupper()
#False
s.islower()
#False
s.isdigit()
#False
s.lower()
#'hello world'
s.upper()
#'HELLO WORLD'
s.swapcase()
#'hELLO WORLD'
s.split()
#['Hello', 'world']
注意:strip()不能去除字符串中间的空格,去除中间空格用replace()
a=' hello world '
a.strip()
#'hello world'
a.lstrip()
#'hello world '
a.rstrip()
#' hello world'
a.replace(' ','')
#'helloworld'
a = [1,54,2,22,4]
a.append(25)
a
#[1, 54, 2, 22, 4, 25]
a.insert(0,2)
a
#[2, 1, 54, 2, 22, 4, 25]
a[0]=3
a
#[3, 1, 54, 2, 22, 4, 25]
a.pop()
#25
a.remove(3)
a
#[1, 54, 2, 22, 4]
遍历
for x in a:
print(x)
for i in range(len(a)):
print(a[i])
b=[x**2 for x in a]:
print(x)
for x in a:
print(x)
'''
1
54
2
22
4
'''
for i in range(len(a)):
print(a[i])
'''
1
54
2
22
4
'''
b=[x**2 for x in a]
b
#[1, 2916, 4, 484, 16]
l=[1,2,3,4,5,6]
len(l)
#6
max(l)
#6
min(l)
#1
l.reverse()
l
#[6, 5, 4, 3, 2, 1]
l.sort(reverse = False) #降序
l
#[1, 2, 3, 4, 5, 6]
4 in l
#True
l[0:2]
#[1, 2]
l.clear()
l
#[]
a=(1,1.5,'abc')
a[0]
#1
a[2]
#'abc'
len(a)
#3
1 in a
#True
a[0:2]
#(1, 1.5)
a={1,1.5,'abc'}
a.add(2)
a
#{1, 1.5, 2, 'abc'}
a.update({4,5})
a
#{1, 1.5, 2, 4, 5, 'abc'}
a.remove(1.5)
a
#{1, 2, 4, 5, 'abc'}
a={1,2,3}
b={3,4,5}
a-b
#{1, 2}
a|b
#{1, 2, 3, 4, 5}
a&b
#{3}
a^b
#{1, 2, 4, 5}
s = {'age':18,'name':'小明'}
s['age']=19
s
#{'age': 19, 'name': '小明'}
s['city']='长沙'
s
#{'age': 19, 'name': '小明', 'city': '长沙'}
s.pop('city')
s
#{'age': 19, 'name': '小明'}
'age' in s
#True
for key in s:
print(key)
#age
#name
for value in s.values():
print(value)
#19
#小明
for k,v in s.items():
print(k,v)
#age 19
#name 小明