首页 文章 精选 留言 我的

精选列表

搜索[python3],共1105篇文章
优秀的个人博客,低调大师

Python3—— collections模块

collections的常用类型有: 计数器(Counter) 双向队列(deque) 默认字典(defaultdict) 有序字典(OrderedDict) 可命名元组(namedtuple) 使用以上类型时需要导入模块 from collections import * collections是Python内建的一个集合模块,提供了许多有用的集合类 1. Counter Counter作为字典(dict)的一个子类用来进行hashtable计数,将元素进行数量统计、计数后返回一个字典,键值为元素:值为元素个数 [python] view plain copy s='abcbcaccbbad' l=['a','b','c','c','a','b','b'] d={'2':3,'3':2,'17':2} #Counter获取各元素的个数,返回字典 print(Counter(s))#Counter({'c':4,'b':4,'a':3}) print(Counter(l))#Counter({'b':3,'a':2,'c':2}) print(Counter(d))#Counter({3:3,2:2,17:1}) most_common [python] view plain copy #most_common(int)按照元素出现的次数进行从高到低的排序,返回前int个元素的字典 m1=Counter(s) print(m1)#Counter({'c':4,'b':4,'a':3,'d':1}) print(m1.most_common(3))#[('c',4),('b',4),('a',3)] elements [python] view plain copy #elements返回经过计数器Counter后的元素,返回的是一个迭代器 e1=Counter(s) print(''.join(sorted(e1.elements())))#aaabbbbcccc e2=Counter(d) print(sorted(e2.elements()))#['17','17','2','2','2','3','3']字典返回value个key update [python] view plain copy #update和set集合的update一样,对集合进行并集更新 u1=Counter(s) u1.update('123a') print(u1)#Counter({'a':4,'c':4,'b':4,'1':1,'3':1,'2':1}) substract [python] view plain copy #substract和update类似,只是update是做加法,substract做减法,从另一个集合中减去本集合的元素, sub1='which' sub2='whatw' subset=Counter(sub1) print(subset)#Counter({'h':2,'i':1,'c':1,'w':1}) subset.subtract(Counter(sub2)) print(subset)#Counter({'c':1,'i':1,'h':1,'a':-1,'t':-1,'w':-1})sub1中的h变为2,sub2中h为1,减完以后为1 iteritems 与字典dict的items类似,返回由Counter生成的字典的所有item,只是在Counter中此方法返回的是一个迭代器,而不是列表 iterkeys 与字典dict的keys方法类似,返回由Counter生成的字典的所有key,只是在Counter中此方法返回的是一个迭代器,而不是列表 itervalues 与字典dict的values方法类似,返回由Counter生成的字典的所有value,只是在Counter中此方法返回的是一个迭代器,而不是列表 2.deque deque 包含在文件_collections.py中,属于高性能的数据结构(High performance data structures)之一.可以从两端添加和删除元素,常用的结构是它的简化版 。 deque常用方法: deque [python] view plain copy str1='abc123cd' dq=deque(str1) print(dq)#deque(['a','b','c','1','2','3','c','d']) append 队列右边添加元素 appendleft 队列左边添加元素 [python] view plain copy dq=deque('abc123') dq.append('right') dq.appendleft('left') print(dq)#deque(['left','a','b','c','1','2','3','right']) clearclear 清空队列中的所有元素 count count(value) 返回队列中包含value的个数,结果类型为 integer extend extend 队列右边扩展,可以是列表、元组或字典,如果是字典则将字典的key加入到deque extendleft extendleft 同extend, 在左边扩展 [python] view plain copy dq=deque('abc123') dq.extend({1:10,2:20}) dq.extendleft('L') print(dq)#deque(['L','a','b','c','1','2','3',1,2]) pop pop 移除并且返回队列右边的元素 popleftpopleft 移除并且返回队列左边的元素 remove remove(value) 移除队列第一个出现的元素(从左往右开始的第一次出现的元素value) reversereverse 队列的所有元素进行反转 rotaterotate(n) 对队列的数进行移动,若n<0,则往左移动即将左边的第一个移动到最后,移动n次,n>0 往右移动 [python] view plain copy dq=deque([1,2,3,4,5]) dq.rotate(-1)#左移,1往左移动一位到5后面 print(dq) 3.defaultdict 默认字典,是字典的一个子类,继承有字典的方法和属性,默认字典在进行定义初始化的时候可以指定字典值得默认类型: [python] view plain copy dic=collections.defaultdict(dict) dic['k1'].update({'k2':'aaa'}) print(dic) 我们看上面的例子,字典dic在定义的时候就定义好了值为字典类型,虽然现在字典中还没有键值 k1,但仍然可以执行字典的update方法. 这种操作方式在传统的字典类型中是无法实现的,必须赋值以后才能进行值得更新操作,否则会报错。 我看看一下传统的字典类型 [python] view plain copy b=dict() b['k1'].append('2') #TypeError:'type'objectisnotiterable 4.OrderedDictOrderDict 叫做有序字典,也是字典类型(dict)的一个子类,是对字典的一个补充。 前面我们说过,字典类型是一个无序的集合,如果要想将一个传统的字典类型进行排序一般会怎么做了,我们可能会将字典的键值取出来做排序后在根据键值来进行有序的输出,我们看下面的一个例子: [python] view plain copy #定义传统字典 dic1=dict() #按顺序添加字典内容 dic1['a']='123' dic1['b']='jjj' dic1['c']='394' dic1['d']='999' print(dic1)#结果:{'a':'123','c':'394','b':'jjj','d':'999'} #排序 dic1_key_list=[] forkindic1.keys(): dic1_key_list.append(k) dic1_key_list.sort() forkeyindic1_key_list: print('dic1字典排序结果%s:%s'%(key,dic1[key])) 以上为定义传统字典类型时的一个简单排序过程。 如果我们定义一个有序字典时,将不用再如此麻烦, 字典顺序将按照录入顺序进行排序且不会改变。 [python] view plain copy #定义有序字典 dic2=OrderedDict() dic2['a']='123' dic2['b']='jjj' dic2['c']='abc' dic2['d']='999' fork,vindic2.iteritems(): print('有序字典:%s:%s'%(k,v)) 5.namedtuple 标准的tuple类型使用数字索引来访问元素, [python] view plain copy bob=('Bob',30,'male') print('Representation:',bob) jane=('Jane',29,'female') print('\nFieldbyindex:',jane[0]) print('\nFieldsbyindex:') forpin[bob,jane]: print('%sisa%dyearold%s'%p) 这种对于标准的元组访问,我们需要知道元素对应下标索引值,但当元组的元素很多时,我们可能无法知道每个元素的具体索引值,这个时候就是可命名元组登场的时候了。 nametuple 的创建是由自己的类工厂nametuple()进行创建,而不是由标准的元组来进行实例化,通过nametuple()创建类的参数包括类名称和一个包含元素名称的字符串 [python] view plain copy fromcollectionsimportnamedtuple #创建一个nametuplede类,类名称为Person,并赋给变量P P=namedtuple('Person','name,age,gender') print('TypeofPerson:',type(P))#TypeofPerson:<class'type'> #通过Person类实例化一个对象bob bob=P(name='Bob',age=30,gender='male') print('\nRepresentation:',bob)#Representation:Person(name='Bob',age=30,gender='male') #通过Person类实例化一个对象jane jane=P(name='Jane',age=29,gender='female') print('\nFieldbyname:',jane.name)#Fieldbyname:Jane print('\nFieldsbyindex:') forpin[bob,jane]: print('%sisa%dyearold%s'%p) #Fieldsbyindex: #Bobisa30yearoldmale #Janeisa29yearoldfemale 通过上面的实例可以看出,我们通过nametuple()创建了一个Person的类,并复制给P变量,Person的类成员包括name,age,gender,并且顺序已经定了,在实例化zhangsan这个对象的时候,对张三的属性进行了定义。这样我们在访问zhangsan这个元组的时候就可以通过张三的属性来复制(zhangsan.name、zhangsan.age等)。这样就算这个元组有1000个元素我们都能通过元素的名称来访问而不用考虑元素的下标索引值。 非法的参数值 使用nametuple()来创建类的时候,传递的成员属性参数名称不能非法(不能为系统参数名称),且参数名称不能重复,否则会报值错误 [python] view plain copy #参数字段的名称非法,包含系统名称class try: p=namedtuple('Person','age,name,class,gender') print(p._fields) exceptValueErroraserr: print(err) #Typenamesandfieldnamescannotbeakeyword:'class' #类成员字段参数名称重复age try: p1=namedtuple('Person','age,gender,name,age') print(p1._fields) exceptValueErroraserr: print(err) #Encounteredduplicatefieldname:'age' 但是也有时候我们是无法控制的,如果参数的名称来自外部,比如是通过读取数据库中的内容来传递的参数,此时我们无法手工的修改参数名称,那该如何是好呢! 别担心,只需要增加一个属性就OK了,它就是rename [python] view plain copy #参数字段的名称非法,包含系统名称class try: p=namedtuple('Person','age,name,class,gender',rename=True) print(p._fields) exceptValueErroraserr: print(err) #('age','name','_2','gender') #类成员字段参数名称重复age try: p1=namedtuple('Person','age,gender,name,age',rename=True) print(p1._fields) exceptValueErroraserr: print(err) #('age','gender','name','_3') 从以上的实例我们看出,当有参数错误的时候,系统自动将错误的参数通过增加 "下划线+参数索引" 的方式自动将参数名称替换了。 转载博客:https://blog.csdn.net/songfreeman/article/details/50502194

优秀的个人博客,低调大师

Python3入门(八)模块

模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用python 标准库的方法。 一、import语句 使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下import module1[, module2[,... moduleN]当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表,以下为一个demo test.py文件,用于其他文件导入 def test(): print("hello import") test2.py文件,引入test.py import test test.test() 输出:hello import一个模块只会被导入一次,不管你执行了多少次

优秀的个人博客,低调大师

Python3入门(七)函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数 一、定义一个函数 定义一个由自己想要功能的函数,以下是简单的规则 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 () 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明 函数内容以冒号起始,并且缩进 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None格式如下: def 函数名(参数列表): 函数体 实例: def hello(): print("hello def")

优秀的个人博客,低调大师

Python3基础——装饰器

1、Python是一种面向对象的编程语言,在Python中所有的都可以是Python的对象。即可以在函数内创建函数——函数也可以是变量!(亦可称之为:内嵌函数) 2、如果内部函数引用了外部函数定义的对象(即某函数调用的是该函数以外定义的对象,但该对象不是全局变量),那么此时内部函数叫做:闭包函数,所引用的外部变量叫:自由变量。 什么是闭包函数?——函数内部定义函数;并且引用了外部变量但不是全局变量。 3、Python装饰器 Python装饰器本质上是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器返回的值也是一个函数对象。 3.1 变量与引用示例: 结果: 3.2 装饰器示例一: 运行结果: 3.3 装饰器示例二: 步骤1:执行代码第一行 定义变量为author 的函数srartEnd(即函数srartEnd就是装饰器) 步骤2:获取变量 author 的值,即author的值为 Jsh 步骤3:获取到author的值后,执行函数srartEnd 步骤4:执行函数srartEnd的内容,即定义变量为 fun 的函数a 步骤5:返回函数a的值 步骤6:@符号是装饰器的语法糖,在定义函数的时候使用,避免再一次被赋值 即:变量 author的值依旧为 Jsh 步骤7:定义变量为name的函数b( 即闭包函数 b ) 步骤8:返回函数b的值 步骤9:@符号是装饰器的语法糖,在定义函数的时候使用,避免再一次被赋值 即:变量 author的值依旧为 Jsh 步骤10:申明函数 hello 的变量name的值为 Xiaohai 步骤11:打印 This author is Jsh 步骤12:打印 Start 步骤13:执行变量为name的函数fun 此函数的返回值为函数a 的变量 步骤14、15:打印函数hello的结果 步骤16:打印 End 运行结果:

优秀的个人博客,低调大师

Python3 错误和异常

作为Python初学者,在刚学习Python编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。 Python有两种错误很容易辨认:语法错误和异常。 语法错误 Python 的语法错误或者称之为解析错,是初学者经常碰到的,如下实例 这个例子中,函数 print() 被检查到有错误,是它前面缺少了一个冒号(:)。 语法分析器指出了出错的一行,并且在最先找到的错误的位置标记了一个小小的箭头。 异常 即便Python程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。 大多数的异常都不会被程序处理,都以错误信息的形式展现在这里: 异常以不同的类型出现,这些类型都作为信息的一部分打印出来: 例子中的类型有 ZeroDivisionError,NameError 和 TypeError。 错误信息的前面部分显示了异常发生的上下文,并以调用栈的形式显示具体信息。异常处理 以下例子中,让用户输入一个合法的整数,但是允许用户中断这个程序(使用 Control-C 或者操作系统提供的方法)。用户中断的信息会引发一个 KeyboardInterrupt 异常。 如果你在学习Python的过程中遇见了很多疑问和难题,可以加-q-u-n 227 -435-450里面有软件视频资料免费 try语句按照如下方式工作; 首先,执行try子句(在关键字try和关键字except之间的语句) 如果没有异常发生,忽略except子句,try子句执行后结束。 如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。 如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。 一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。 处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。 一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组,例如: 用户自定义异常 你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承,例如: 在这个例子中,类 Exception 默认的 __init__() 被覆盖。 当创建一个模块有可能抛出多种不同的异常时,一种通常的做法是为这个包建立一个基础异常类,然后基于这个基础类为不同的错误情况创建不同的子类:大多数的异常的名字都以"Error"结尾,就跟标准的异常命名一样。 定义清理行为 try 语句还有另外一个可选的子句,它定义了无论在任何情况下都会执行的清理行为。 例如: >>>try: ... raise KeyboardInterrupt ... finally: ... print('Goodbye, world!') ... Goodbye, world! Traceback (most recent call last): File "<stdin>", line 2, in <module> KeyboardInterrupt 以上例子不管 try 子句里面有没有发生异常,finally 子句都会执行。 如果一个异常在 try 子句里(或者在 except 和 else 子句里)被抛出,而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后再次被抛出。 下面是一个更加复杂的例子(在同一个 try 语句里包含 except 和 finally 子句): 预定义的清理行为 一些对象定义了标准的清理行为,无论系统是否成功的使用了它,一旦不需要它了,那么这个标准的清理行为就会执行。 这面这个例子展示了尝试打开一个文件,然后把内容打印到屏幕上: for line in open("myfile.txt"): print(line, end="") 以上这段代码的问题是,当执行完毕后,文件会保持打开状态,并没有被关闭。 关键词 with 语句就可以保证诸如文件之类的对象在使用完之后一定会正确的执行他的清理方法: with open("myfile.txt") as f: for line in f: print(line, end="") 以上这段代码执行完毕后,就算在处理过程中出问题了,文件 f 总是会关闭。

优秀的个人博客,低调大师

python3入门与实践

Day 1 语言特点,环境搭建,数据结构 python 官网:http://python.org 集成开发环境:Geany,一个字:快,各个平台都有对应版本 变量 变量名只能包含字母,数字和下划线 变量名不能包含空格 不要将Python关键字和函数名用作变量名 变量名应既简短而又具有描述性 慎用小写字母l和大写字母O,因为它们可能被人错堪称1和0 字符串 用单引号或者双引号括起来,主要是为了方便在字符串中包含引号和撇号。 比如: 'I told my friend,"python is my favorite language!"' 使用方法修改字符串的大小写 字符串可以看过为对象,所以他有很多实现好了的方法 title() :返回此字符串每个单词的首字母大写状态的字符串 upper():全部大写 lower():全部小写 拼接字符串 1.直接“+”相连 删除空白 rstrip():返回字符串末尾没有空白状态的字符串 lstrip():返回字符串开头没有空白状态的字符串 strip():返回字符串两端没有空白状态的字符串 数字 整数 在Python中,可对整数执行加(+)减(-)乘(*)除(/)运算。在终端会话中,Python直接返回运算结果。Python使用两个乘号表示乘方运算: result = 3 ** 2 print(result) 浮点数 使用str()函数避免类型错误 和非字符串类型的变量或常量与字符串拼接时应该调一下str函数确保类型一致 例子: result = 3 ** 2 message = "happy "+str(result)+" brithday!" print(message) 注释 注释用“#”标识 编码 # -*- coding: gbk -*-

优秀的个人博客,低调大师

Python3入门(十三)面向对象

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。 一、简介 类(class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例 方法:类中定义的函数 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写 局部变量:定义在方法中的变量,只作用于当前实例的类 实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册