python
爱吃水饺的小京
这个作者很懒,什么都没留下…
展开
-
python-sorted函数
key 指定带有单个参数的函数,用于从iterable的每个元素中提取用于比较的键,key是一个函数,他的参数是iterable的单个元素,然后返回比较的键。编写一个函数,参数是lst2的单个元素,返回要比较的键,比较时,sorted会将dict1逐一替换成{“name”:“wang”,“age”:12}等。若排序时不指定比较的键也就是key,会报错,因为dict之间是无法比较的。简单结构的列表排序比较简单,直接比较数字的大小,不需要执行key。对字典的排序,返回的是字典的key排序后的结果。原创 2022-09-20 17:43:31 · 372 阅读 · 1 评论 -
python-collections
collections提供了一些容器类,用来替代list,set,tuple,dict的标准容器类名用途namedtuple创建命名元祖子类的工厂函数deque类似列表,实现了从两端快速添加和弹出ChainMap类似字典,将多个映射集合到一个视图里Counter类似字典,提供了可哈希对象的计数功能OrderedDict字典的子类,保存了被添加的顺序defaultdict字典的子类,提供了一个工厂函数,为字典查询提供一个默认值UserDic原创 2022-04-27 14:04:24 · 799 阅读 · 0 评论 -
python-查找字符串位置
在字符串ABAAABCDBBABCDDEBCABC中寻找ABC出现的索引位置思考:查找位置,可以想到字符串的find方法,以及字符串索引find方法是找出第一个出现的位置,可以在第一个找到后,往后移动start的位置,找去其他字符串中ABC出现的第一个位置,依次类推如果使用生成器,则每次返回一个位置如果不使用生成器,一次直接返回一个列表,将位置存储在列表中一次返回str1="ABAAABCDBBABCDDEBCABCDDDABCJJJKK"pattern="ABC"def pattern_s原创 2022-04-26 11:13:40 · 10073 阅读 · 0 评论 -
python-去重
字符串,列表去重可以使用set对字符串或者列表去重,集合是无序,不重复的序列,可以使用set进行去重#单词去重def words_dumplate(sentence): return ' '.join(set(sentence.split()))print(words_dumplate("Python is great and Java is also great"))#字符串去重def str_dumplate(string): return ''.join(s原创 2022-04-25 22:21:49 · 939 阅读 · 0 评论 -
[python每日一练]word patterns
给定一个字符串,“pattern“,那这个字符串的pattern就是0.1.2.2.3.4.5这和字符串的index有关,需要判断后续的字符是否之前出现过,所以需要使用另一个数据类型来存储遍历过的字符def get_word_pattern(string): pattern=[] #使用一个字典来存储遍历过的字符和其index,每次遍历后需要先判断字符是否在这个字典中,如果只需要字符,则可以使用列表,如果既要字符还要其他如index,可以使用字典存储 pattern_dic={}原创 2022-04-24 12:08:46 · 229 阅读 · 0 评论 -
[python每日一练]split-使用enumerate来实现split方法
#首先使用enumerate生成一个有索引和可迭代对象的元素组成的一个枚举对象,使用lst_index记录上一次分隔符的位置,注意最后一组元素def my_split(s,separator=" "): new_lst=[] lst_index=0 for index,char in enumerate(s): if char==separator: new_lst.append(s[lst_index:index])原创 2022-04-24 11:38:12 · 650 阅读 · 0 评论 -
python-装饰器
理解函数在python中,函数是一个函数对象,定义函数时,将这个函数对象赋值给了一个变量(函数名)#理解函数,函数也是一个对象,定义函数时,将这个函数对象赋值给了一个变量(函数名)def double(x): return x**2print(double)print(dir(double))运行结果:<function double at 0x7f8cccdd3040>['__annotations__', '__call__', '__class__', '__原创 2022-04-12 10:51:36 · 147 阅读 · 0 评论 -
python-回调函数
回调函数函数的名字作为其他函数的参数,那么这个函数就叫做回调函数例子:def avg(x,y): return (x+y)/2def my_sum(x,y): return x+ydef function(f,x,y): return f(x,y)avg_1=function(avg,3,4)print(avg_1)sum_1=function(my_sum,3,4)print(sum_1)运行结果:3.57回调函数的应用回调函数比较灵活,比如s原创 2022-04-11 21:59:06 · 6214 阅读 · 0 评论 -
python-模块包
包导入基础import dir1.dir2.modfrom dir1.dir2.mod import xdir1.dir2.mod这些路径对应于机器上目录层次的路径,通过这个路径可以获得文件mod.py包和搜索路径使用sys.path来查看包的搜索路径路径设置在环境变量PYTHONPATH中init.py包文件包导入语句的路径中每个目录内必须有 init.py这个文件,否则包导入失效例如:mod.py文件的路径是dir0\dir1\dir2\mod.py那么使用import倒入mod文原创 2022-04-10 18:10:41 · 805 阅读 · 0 评论 -
python-匿名函数:lambda
匿名函数简介lambda表达式创建了一个之后能够调用的函数,但是它返回函数本省而不是将其赋值给一个变量lambda表达式基础lambda表达式的定义lambda arg1,arg2,…argN:expression using argumentslambda是一个表达式,而不是语句,lambda能够出现在python语法不允许def出现的地方lambda的主体是一个单独的表达式,而不是一个代码块def func(x,y,z): return x+y+zprint(func(2,3原创 2022-04-10 15:49:55 · 743 阅读 · 0 评论 -
python-迭代器和生成器案例
手动迭代对于迭代器和迭代对象,可以使用迭代工具,比如for循环,也可以自己手动迭代手动迭代需要自己处理StopIteration异常迭代器手动迭代因为迭代器内置了__next__方法,调用next()就会自动调用__next__方法(1)文件是一个迭代器f=open("text.text")try: while True: line=next(f) print(line,end='')except StopIteration: passfi原创 2022-04-07 22:58:02 · 407 阅读 · 1 评论 -
python-生成器
生成器函数和生成器表达式在需要时产生结果,而不是立即产生结果生成器函数:使用常规的def语句编写,但是使用yield语句一次返回一个结果,在每次结果产生之间挂起和恢复他们的状态生成器表达式:类似列表推导,但是返回一个按需产生结果的一个对象,而不是创建一个结果列表二者都不会一次性的创建一个列表,从而节省了空间生成器函数常规函数,使用return立即返回结果生成器函数:当创建时,他们被特殊地编译成一个支持迭代工具的对象,并且在调用的时候不会返回结果,而是返回一个生成器,这个生成器支持迭代工具生成原创 2022-04-07 14:15:58 · 894 阅读 · 0 评论 -
python-迭代器和推导
可迭代对象和迭代器可迭代对象是序列观念的一种通用化,如果对象是实际保存的序列,或者可以在迭代工具(比如for),一次产生一个的对象,那么就可以看作是可迭代的可迭代对象iterable,是指支持iter调用的对象,内置的iter方法调用对象的__iter__方法迭代器iterator,是指支持next()调用的对象,内置的next方法调用对象的__next__方法迭代工具迭代工具包括for,in,列表推导,map等工作原理可迭代对象的工作原理:for循环开始时,会首先把可迭代对象传入到内置函数i原创 2022-04-06 22:53:08 · 708 阅读 · 0 评论 -
python-字符串处理
文本模式的匹配和查找str.find/str.endswith/str.startswith如果只是匹配简单的文字,使用字符串的find,endswith,startswith这些方法即可text='yeah,but no,but yea,but no,but yeah'print(text.endswith('yeah'))print(text.startswith("no"))#返回第一个匹配的索引print(text.find("no"))运行结果:TrueFalse9原创 2022-04-06 14:49:37 · 339 阅读 · 0 评论 -
python-正则表达式
正则表达式练习网址https://regex101.com/正则表达式元字符. 表示匹配除换行外的所有字符表示匹配前面的子表达式任意次,包括0次表示匹配前面的子表达式一次或多次,不包括0 次{m,n} 花括号,便是前面的字符匹配指定的次数,至少m次,至多n次匹配某种字符类型\d 匹配0-9之间任意一个数字字符,,等价于[0-9]\D 匹配任意一个不是0-9之间的数字字符,等价于[^0-9]\s 匹配任意一个空白符,包括空格,tab,换行符,等价于表达式[\t\n\r\v\f原创 2022-04-04 16:26:32 · 576 阅读 · 0 评论 -
python-异常
异常的概念程序在运行时,如果python解释器遇到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常程序停止执行并且提升错误信息这个动作,就是抛出异常程序开发时,很难将所有的特殊情况都处理的面面俱到,通过异常捕获可以针对突发事件做集中处理,从而保证程序的稳定性和健壮性捕获异常简单的捕获异常的语法在程序开发中,如果对某些代码的执行不能确定是否正确,可以增加try来捕获异常捕获异常的简单语法:try:尝试执行的代码except:出现错误的处理代码try尝试,下方编写要尝试的代码原创 2022-03-25 11:46:59 · 1155 阅读 · 0 评论 -
python-单例模式
单例设计模式让类创建的对象,在系统中只有唯一的一个实例每一次执行类名(),返回的对象,内存地址是相同的__new__方法使用类名()创建对象时,python的解释器首先会调用__new__方法为对象分配空间__new__是一个由object基类提供的内置的静态方法,主要作用有两个:1. 在内存中为对象分配空间2. 返回对象的引用python的解释器获得对象的引用后,将引用作为第一个参数,传递给__init__方法重写__new__方法一定要return super().new(cls)否原创 2022-03-24 23:06:38 · 1678 阅读 · 0 评论 -
python-类属性,类方法和静态方法
类结构实例使用面向对象开发,第1步是设计类使用类名(),创建对象,创建对象的动作有两步:(1)使用__new__在内存中为对象分配空间(2) 调用初始化方法__init__,为对象实例化对象创建后,内存中就有了一个对象实实在在的存在—实例对象的属性叫做实例属性对象调用的方法叫做实例方法在程序执行时:对象各自拥有自己的实例属性调用对象方法,可以通过self访问自己的属性调用自己的方法重点:每一个对象,都有自己独立的内存空间,保存各自不同的属性多个对象的方法,在内存中只有原创 2022-03-24 22:17:24 · 113 阅读 · 0 评论 -
python-多态
多态的概念多态:不同的子类对象调用相同的父类方法,产生不同的执行结果多态可以增加代码的灵活度以继承和重写父类方法为前提例子1.在Dog类中封装方法game2. 定义XiaoTianDog继承自Dog,并且重写game方法3. 定义Person类,并且封装一个和狗玩的方法class Dog(): def __init__(self,name): self.name=name def game(self): print("愉快的玩耍")cl原创 2022-03-24 16:37:15 · 1037 阅读 · 0 评论 -
python-继承
面向对象的三个特性封装,根据职责将属性和方法封装到一个抽象的对象中继承,实现代码的重用,相同的代码不需要重复编写多态,不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度单继承继承的概念:子类拥有父类的所有方法和属性继承的语法class 类名(父类名):pass子类继承自父类,可以直接享受父类中已经封装好的方法,不需要再次开发子类中应该根据职责,封装子类特有的属性和方法继承的传递性C类从B类继承,B类又从A类继承那么C类就具有B类和A类的所有属性和方法子类拥有父类以原创 2022-03-24 16:11:48 · 98 阅读 · 0 评论 -
python-私有属性和私有方法
对象的某些属性或方法可能只希望在对象内部使用,而不希望在外部被访问到私有属性就是对象不希望公开的属性私有方法就是对象不希望公开的方法定义方式在定义属性或方法时,在属性名或者方法名前加上两个下划线,就是私有属性或方法class Women(): def __init__(self,name): self.name=name self.__age=18 def __secrect(self): print("%s 的年龄是 %d"%(s原创 2022-03-21 21:45:52 · 701 阅读 · 0 评论 -
python-身份运算符
身份运算符身份运算符用于比较两个对象的内存地址是否一致,是否是对同一个对象的引用在python中针对None比较时,建议使用is判断运算符描述实例isis是判断两个标识符是不是引用同一个对象x is y 类似id(x)==id(y)is notis not是判断两个标识符是不是引用不同对象x is not y 类似id(x)!=id(y)id与==的区别is用于判断两个变量引用对象是否为同一个==用于判断引用变量的值是否相等a=[1,2,3]b=[1原创 2022-03-21 17:59:32 · 681 阅读 · 0 评论 -
python-面向对象案例
需求房子(House)有户型,总面积,和家具名称列表新房子没有任何的家具家具(HouseItem)有名字和站地面积,其中席梦思(bed)占地4平米衣柜(chest)占地2平米餐桌(table)占地1.5平米将以上三件家具添加到房子中打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表分析首先是House类,有户型,总面积,剩余面积,家具名称列表三个属性以及一个add_item方法,另外需要重写__str__方法家具(HouseItem)有名字,占地面积两个属性class原创 2022-03-20 23:37:55 · 1584 阅读 · 0 评论 -
python-类的初始化方法
对象包含哪些属性,应该封装在类的内部初始化方法__init__方法是专门用来定义一个类具有哪些属性的方法当使用类名()创建对象时,会自动执行以下操作:为对象在内存中分配空间—创建对象为对象的属性设置初始值—自动调用初始化方法(init)...原创 2022-03-20 23:04:28 · 6372 阅读 · 0 评论 -
python-面向对象基础语法
dir内置函数在python中,变量,数据,函数等都是对象原创 2022-03-18 12:29:03 · 346 阅读 · 0 评论 -
python-类和对象
类和对象的概念类和对象是面向对象编程的两个核心概念类类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用特征被称为属性行为被称为方法类是一个模版,是负责创建对象的对象对象是由类创造出来的一个具体的存在,可以直接使用由哪一个类创造出来的对象,就拥有现在哪一个类中定义的:属性行为类和对象的关系类是模板,对象是根据这个模板创造出来的,应该先有类,再有对象类是有一个,而对象可以有很多个:不同的对象之间属性可能会各有不同类中定义了什么属性和方法,对象中就有什么属性和方原创 2022-03-15 08:39:53 · 799 阅读 · 0 评论 -
python-面向对象(OOP)基本概念
面向对象基本概念面向过程和面向对象是两种不同的编程方式面向过程和面向对象的基本概念(1)面向过程把完成某一个需求的所有步骤从头到尾逐步实现根据开发需求,将某些功能独立的代码封装成一个又一个函数最后完成的代码,就是顺序地调用不同的函数(2)面向对象面向对象是更大的封装,根据职责在一个对象中封装多个方法在完成某一个需求前,首先确定职责,----要做的事情(方法)根据职责确定不同的对象,在对象内部封装不同的方法最后完成的代码,就是顺序地让不同的对象调用不同的方法特点:(1) 注重原创 2022-03-14 22:37:04 · 800 阅读 · 0 评论 -
python-函数的递归
递归函数的特点一个函数内部调用自己函数内部的代码是相同的,只是针对参数不同,处理的结果不同当参数满足一个条件时,函数不再执行这个非常重要,通常被称为递归的出口,否则,会出现死循环列子计算n个数之和def sum_numbers(m): if m==1: return 1 return sum_numbers(m-1)+mprint(sum_numbers(5))1、1、2、3、5、8、13、21、34 斐波拉契数列def demo1(n):原创 2022-03-14 22:25:24 · 1326 阅读 · 0 评论 -
python-函数形参和返回值
函数的返回值一个函数执行后可以返回多个返回值def measure(): print('测量开始。。。。') temp=39 wetness=50 print("测量结束") #元组--可以包含多个数据,因此可以使用元组一次返回多个值 return (temp,wetness)result=measure()print(result)运行结果:测量开始。。。。测量结束(39, 50)def measure(): print('测原创 2022-03-14 22:10:05 · 1041 阅读 · 0 评论 -
python-变量进阶
变量的引用变量和数据都是保存在内存中的在python中函数的参数传递以及返回值都是引用传递引用的概念在python中变量和数据是分开存储的数据保存在内存中的一个位置变量中保存着数据在内存中的地址变量中记录数据的地址,就叫做引用使用id()函数可以查看变量中保存的数据的内存地址注意:如果变量已经被定义了,当给一个变量再次赋值的时候,本质上修改了数据的引用#对于这个赋值语句,首先在内存中开辟一个内存用来存贮数字1,然后把1的内存地址存在变量a里a=1print(id(a))a=3原创 2022-03-13 18:43:31 · 186 阅读 · 0 评论 -
python-完整的for循环语法
完整的for循环语法在python中完整的for循环的语法如下:for 变量 in 集合:循环体代码else:没有通过break退出循环,循环结束后,会执行的代码如果for循环的代码通过brank跳出循环,就不会执行else例子for num in [1,2,3]: print(num) if num==2: breakelse: #如果循环体内部使用break退出循环,else的代码就不会被执行 print("代码会执行吗?")print原创 2022-03-13 18:03:17 · 6708 阅读 · 0 评论 -
python-序列的公共方法
python内置的函数len()--------计算容器中元素个数del(item)----------删除变量max()-----返回容器中的最大值,如果是字典,只针对key的比较min()-------返回容器中元素的最小值,如果是字典,只针对key的比较camp()-----比较两个值,python3.x中取消这个函数切片字符串,列表,元组支持切片运算符运算符python表达式结果描述支持的数据类型+[1,2] +[3.4][1,2,3,4]合并字符原创 2022-03-12 23:25:45 · 246 阅读 · 0 评论 -
python-字符串
字符串的定义字符串就是一串字符,是编程语言中表示文本的数据类型在python中,可以使用一对双引号或者一对单引号,来定义一个字符串虽然可以使用"或者’ 用于字符串的转义,但实际开发中:如果字符串内部需要使用“,可以使用‘来定义字符串如果字符串内部需要使用‘,可以使用“来定义字符串索引使用索引来获取指定位置的字符,索引从0开始for循环遍历也可以使用for 循环遍历字符串中的每一个字符...原创 2022-03-12 23:08:08 · 1359 阅读 · 0 评论 -
python-局部变量和全局变量
局部变量和全局变量局部变量是在函数内部定义的变量,只能在函数内部使用全局变量是在函数外部定义的变量,所有函数内部都可以使用这个变量局部变量局部变量是在函数内部定义的变量,只能在函数内部使用函数执行结束后,函数内部的局部变量,会被系统回收不同的函数,可以定义相同的名字的局部变量,不会相互产生影响局部变量的作用在函数内部使用,临时保存函数内部需要使用的数据局部变量的生命周期所谓生命周期,就是变量从被创建到被系统回收的过程局部变量在函数执行时才会被创建函数执行结束后局部变量被系统回收局部原创 2022-03-10 22:42:56 · 195 阅读 · 0 评论 -
python-字典
字典的定义字典同样可以用来存储多个数据和列表的区别:列表是有序的对象集合字典是无序的对象集合字典用{]来定义字典使用键值对存储数据键key是索引值value是数据键必须是唯一的值可以是任何数据类型,但是键只能是字符串,数字或元组这些不可变的类型xiaoming={ "name":"xiaoming", "age":19, "height":1.78}字典的方法xiaoming={"name":"xiaoming"}#取值,通过索引原创 2022-03-09 22:43:55 · 239 阅读 · 0 评论 -
python-元组
元组的定义Tuple(元组)与列表类似,不同之处在于元组的元素不能修改元组表示多个元素组成的序列元组在python开发中,有特定的应用场景info_tuple=(“zhangsan”,18,1.75)创建一个空元组:tuple=()创建只有一个元素的元组,要加上逗号tuple1=(1,)元组的使用info_tuple=("zhangsan",19,1.78)#取值print(info_tuple[1])#找出元素的位置print(info_tuple.index(1.78))原创 2022-03-09 21:53:58 · 214 阅读 · 0 评论 -
python-列表
非数字型变量字符串列表元组字典在python中,所有非数字型变量都支持以下特点:都是一个序列,也可以理解为一个容器取值[]遍历 for in计算长度,最大/最小值,比较,删除链接 + 和重复 *切片列表的定义List 列表,是python中国呢使用最频繁的数据类型专门用于存储一串信息列表用[]定义,数据之间用,分割列表的索引是从0开始列表的常用方法| 分类| 方法/函数|说明|| 增加|列表.insert(索引,数据)|在指定位置插入数据|| | 列表.a原创 2022-03-08 22:23:33 · 386 阅读 · 0 评论 -
python-循环while
程序的三大流程在程序开发中,一共有三种流程方式:顺序—从上到下,顺序执行代码分支–根据条件判断,决定执行代码的分支循环—让特定代码重复执行while语句基本语法初始条件设置 —通常是重复执行的计数器while 条件(判断 计数器 是否达到 目标次数 ):条件满足时,做的事情。。。。。处理条件(计数器+1)#计算0-100所有数字的和#定义i为计数器i=0#定义一个变量来存储结果sum=0while i<=100: sum=sum+i i=i+1原创 2022-03-07 22:59:53 · 225 阅读 · 0 评论 -
python-从命令行输入参数argparse
argparse使用argparse的ArgumentParser类可以从命令行输入参数ArgumentParser里的add_argument()定义单个的命令行参数添加一个命令行参数ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])name:命令行参数的命名,如原创 2022-03-05 17:53:41 · 1160 阅读 · 0 评论 -
python-if判断
if判断的基本格式if 要判断的条件:条件成立时,要做的事情else:条件不成立时,要做的事情if语句进阶elif使用if处理条件成立的情况,使用else处理条件不成立的情况,如果需要再增加一些条件,条件不同,需要执行的代码也不同时,可以使用elif if 条件1: TODOelif 条件2: TODOelif 条件3: TODOelse: TODOscore=90if score>=90: print("A")elif原创 2022-03-04 14:36:11 · 198 阅读 · 0 评论