Python
Python学习笔记。
Onecat_j
记录才能提高。
展开
-
Python-字典合并
方法1:使用update方法,第二个参数合并第一个参数def merge(dict1, dict2): return (dict2.update(dict1))# 两个字典dict1 = {'a': 10, 'b': 8} dict2 = {'d': 6, 'c': 4} # 返回None print(Merge(dict1, dict2)) # dict2合并了dict1print(dict2)# 结果None{'d': 6, 'c': 4, 'a': 10, '..原创 2021-10-05 19:50:30 · 233 阅读 · 0 评论 -
Python-读写json文件
python的字典可以实现与json格式的互相转化,主要是json.dump和json.load。字典写入json文件我们将python创建一个字典类型的数据data,打包为json字符串格式;接下来,我们将打包好的json_str写入文件。data = { 'name':'ACM', 'day':'2018-11', 'place':'beijing'}json_str = json.dumps(data)print(json_str)print(type(j转载 2021-09-26 19:39:55 · 198 阅读 · 0 评论 -
Python-正则表达式
元字符符号含义.匹配除换行符外的任意字符^匹配字符串的开始$匹配字符串的结束\d匹配数字\b匹配单词的开始或者结束,单词的分界通常是空格、标点符号或者换行\w匹配字母、数字、下划线或汉字\W匹配除字母、数字、下划线或汉字以外的字母\s匹配单个空白符\S匹配除单个空白符以外的所有字符限定符符号含义?匹配前面的字符0次或1次*匹配前面的字符0次或多次+匹配前面的字符1次或多次原创 2021-09-16 13:59:25 · 131 阅读 · 0 评论 -
Python-内存管理与GC
内存管理引用计数Python解释器中,主要通过引用计数(Reference Counting)进行垃圾回收。typedef struct_object { int ob_refcnt; struct_typeobject *ob_type;} PyObject;在Python中每一个对象的核心就是一个结构体PyObject,它的内部有一个引用计数器(ob_refcnt)。程序在运行的过程中会实时的更新ob_refcnt的值,来反映引用当前对象的名称数量。当某对象的引用计数值为0,那么它的内存转载 2021-09-15 14:18:00 · 452 阅读 · 0 评论 -
Python-拷贝
原理:不可变对象是值传递;可变对象是引用传递。浅拷贝所属模块:copy.copy()。import copy # 导包list1 = ['w', 20, 10, ['d', 21, 11]] # 列表中包括可变对象和不可变对象list2 = list1.copy() # 浅拷贝list3 = copy.copy(list1) # 浅拷贝,和上面的浅拷贝一样print(id(list1),id(list3)) # 两者内存地址不一样print(id(list1[0]), id(list原创 2021-09-15 10:30:51 · 145 阅读 · 0 评论 -
Python-错误与异常处理
通常情况下,在try语句块中写我们想要的逻辑,发生错误和异常时Python解释器会采用raise方法即将异常抛出,except语句可以承接raise方法抛出的异常并对异常做出处理。Python中有三种异常捕获与处理形式:第一种:try…except…形式,如下例子。def division(a, b): try: return a / b # 出现异常会扔出一个异常对象(rasie ...Error('错误信息')) except TypeError as err:原创 2021-09-14 19:07:40 · 110 阅读 · 0 评论 -
Python-迭代器/生成器
可调用对象(callable)用户使用def或lambda语句创建的函数。使用C语言(CPython)实现的内置函数,如time.strftime()和len()。使用C语言实现的方法,如dict.get()。方法,在类的定义体中定义的函数。类。类的实例,需要定义__call__()方法后的类的实例。使用yeild关键字的函数或方法。将可调用对象转换成迭代器,使用下面的方法:iter(callable, sentinel) -> iterator 可迭代对象(iterabl原创 2021-09-14 14:57:08 · 201 阅读 · 0 评论 -
Python-reduce()
functools.reduce(function, iterable[, initializer])将两个参数的 function 从左至右积累地应用到 iterable 的条目,以便将该可迭代对象缩减为单一的值。例如,reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) 是计算 ((((1+2)+3)+4)+5) 的值。 左边的参数 x 是积累值而右边的参数 y 则是来自 iterable 的更新值。如果存在可选项 initializer,它会被放在参与计算的可迭代转载 2021-05-11 08:26:09 · 116 阅读 · 0 评论 -
Python-排序进阶(cmp_to_key)
python3之后不支持cmp,所用key函数并不直接比较任意两个原始元素,而是通过key函数把那些元素转换成一个个新的可比较对象,也就是元素的key,然后用元素的key代替元素去参与比较。如果原始元素本来就是可比较对象,比如数字、字符串,那么不考虑性能优化可以直接sort(key=lambda e: e)。不过这种基于key函数的设计倾向于每个元素的大小有个绝对标准,但有时却会出现单个元素并没有一个绝对的大小的情况,此时可以使用 functools.cmp_to_key构建基于多个元素的比较函数。以一个转载 2021-04-12 09:16:35 · 4679 阅读 · 0 评论 -
Python-求两数最大公约数
math.gcd(x,y)原创 2021-04-06 15:31:14 · 425 阅读 · 0 评论 -
Python-Pycharm更新pip错误
错误类型:AttributeError: ‘NoneType’ object has no attribute ‘bytes’。解决方法:terminal中用easy_install -U pip命令更新pip。原创 2020-12-24 16:10:38 · 302 阅读 · 1 评论 -
Python-排列组合函数
product 笛卡尔积 (有放回抽样排列)permutations 排列 (不放回抽样排列)combinations 组合,没有重复 (不放回抽样组合)combinations_with_replacement 组合,有重复 (有放回抽样组合)import itertoolsfor i in itertools.product('ABCD', repeat = 2): print(i)# ('A', 'A') ('A', 'B') ('A', 'C') ('A', 'D') (转载 2020-12-24 10:09:51 · 805 阅读 · 0 评论 -
python-Spider
爬取当当网排名前500的书籍信息import reimport jsonimport requests# 请求网页信息def request_dang(url): try: response = requests.get(url) if response.status_code == 200: return response.text except requests.RequestException: re转载 2020-12-16 14:32:25 · 175 阅读 · 0 评论 -
Python-求排列组合的方法
1. 调用 scipy 计算排列组合的具体数值 from scipy.special import comb, perm A = perm(3, 2)# out:A = 6.0C = comb(3, 2)# out: C = 3.02. 调用 itertools 获取排列组合的全部情况from itertools import combinations, permutationsitering = permutations([1, 2, 3], 2) Alist = list(it转载 2020-12-09 10:13:42 · 1274 阅读 · 0 评论 -
Python-容器数据类型(collections)[2]
defaultdict对象defaultdict在字典dict的基础之上添加一个参数default_factory(default_factory可以指定为list,set,int)例子1:将下面的list转换成一个dict,其中key对应的value是一个listfrom collections import defaultdictl=[('a',2),('b',3),('a',1),('b',4),('a',3),('a',1),('b',3)]d=defaultdict(list)fo转载 2020-12-04 15:17:26 · 192 阅读 · 0 评论 -
Python-堆结构(heapq)
1.创建堆创建堆的方式分为两种:一种是先创建一个空的堆,然后再用heapqpush()往堆中添加元素;另一种是将列表转换为堆,用heapqfy()方法。import heapqdig = [7,2,9,12,5,3]# 法1heap = []for item in dig: heapqpush(heap, item)# 法2heap = heapqfy(dig)print(heap[0]) # 输出最小元素res = [heap.heapqpop() for _ in range转载 2020-11-30 10:05:18 · 839 阅读 · 2 评论 -
Python-容器数据类型(collections)[1]
这个模块实现了特定目标的容器,以提供Python标准内建容器 dict , list , set , 和 tuple 的替代选择。1.ChainMapfrom collections import ChainMapcollections.ChainMap(*maps)其中maps是字典结构,并且可以是多个字典。例如:dict1, dict2, dict3, dict4 = {"a": "A"}, {"b": "B"}, {"c": "C"}, {"d": "D"}combined = C原创 2020-11-18 14:45:55 · 163 阅读 · 0 评论 -
Python-栈结构
栈(stack)又名堆栈,它是一种运算受限的线性表。栈只能在一端进行插入和删除操作,它按照先进后出(FILO)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。栈也可以看成是 FILO 的队列。class Stack(object): def __init__(self): self.stack = [] def push(self, data): """ 进栈函数 """ self.stack.a转载 2020-11-12 10:07:25 · 365 阅读 · 0 评论 -
Python-队列类及其方法
1.Python的队列类型from queue import Queue, LifiQueue, PriorityQueue, SimpleQueueFIFO(先入先出)Queue(maxsize=0)FIFO队列的构造函数。maxsize是一个整数,用于设置放入队列中数据的上限。一旦达到此大小,插入将被阻塞。如果maxsize<=0,则队列大小为无限。LIFO(后进先出)LifoQueue(maxsize=0)LIFO队列的构造函数,其它同上。优先级队列 PriorityQueue(原创 2020-11-11 10:45:50 · 475 阅读 · 0 评论 -
Python-list排序方法
1.基本排序list.sort():在原列表上排序。newlist = sorted(list):生成新的排序后的列表。例如:rowlist = [5,2,3,1,4]rowlist.sort()# 结果 rowlist = [1,2,3,4,5]newlsit = sorted(rowlist)# 结果 newlist = [1,2,3,4,5]# 结果 rowlist = [5,2,3,1,4]2.关键函数key主要是用来比较的元素,它接收一个参数并返回一个用于排序的键。例转载 2020-11-10 10:21:43 · 1277 阅读 · 0 评论 -
Python-heapq堆
1.堆介绍堆是非线性的树形的数据结构,有两种堆,最大堆与最小堆。( heapq库中的堆默认是最小堆)。最大堆,树种各个父节点的值总是大于或等于任何一个子节点的值。最小堆,树种各个父节点的值总是小于或等于任何一个子节点的值。我们一般使用二叉堆来实现优先级队列,它的内部调整算法复杂度为logN。堆是一个二叉树,其中最小堆每个父节点的值都小于或等于其所有子节点的值。整个最小堆的最小元素总是位于二叉树的根节点。python的heapq模块提供了对堆的支持。 heapq堆数据结构最重要的特征是heap[转载 2020-11-09 09:48:27 · 277 阅读 · 0 评论 -
Python-defaultdict(type)字典
其传入参数必须是type, 例如 int, list,set等,而返回的默认值,就是这些type下的默认值,例如int返回的默认值是0,list是空list等。defaultdict与普通dict的最大作用在于: 你可以直接call一个不存在的key,如果不存在这个key,那就先直接创建这个key,并根据默认值的设置,赋值value,而后在继续操作。 省去了 dict[new] =dict.get(new, default = []) 然后才能使用dict[new]来进一步操作。相比之下:你可放.转载 2020-11-05 16:15:13 · 341 阅读 · 0 评论