python成长之路——第三天
collections其实是python的标准库,也就是python的一个内置模块,因此使用之前导入一下collections模块即可,collections在python原有的数据类型str(字符串), int(数值), list(列表) tuple(元组), dict(字典)的基础之上增加一些其他的数据类型即方法,具体如下:
1、Counter(dict):计数器,扩展的字典的方法,对指定数据的字串做统计出现的次数,结果是一个元组,如:
collections.Counter
2、most_common():不加参数以列表里面加元组方式显示每个字符串出现多少次,加数字表示最少出现括号里面传递的数字次数,如:
most_common
3、collections.items:以字典结果方式显示每个元素出现的次数生成一个迭代器,可以使用for循环遍历每个元素:,如下:
items
4、collections.elements:获取每个到每个元素并生成一个迭代器,可以使用for循环遍历每个元素:
elements
5、collections.update:对同一个元素的出现次数进行增加更新:
update
5、subtract:对同一个元素做减处理,如下:
subtract
6、del:删除指定的元素:会删除元素和元素的计数值:
del
7、get:获取指定元素出现的次数:
get
8.copy:是浅copy,浅copy只copy第一层,变量里面包含的列表或字典的id值和以前是不变的:
copy
9、defaultdict:默认字典,在创建的时候指定该字典的默认数据格式,可以是列表、元组或列表等,如:
defaultdict
10.OrderedDict:有序字典,默认创建的字典是无需的,可以使用OrderedDict创建字典,这样字典内部会对key进行排序显示,key的顺序将会固定保持不变,如下:
OrderedDict
有序字典的常用操作:
pop、删除指定的字典key,并返回被删除的value
pop
keys:获取有序字典的全部key,方法和字典是一样的:
keys
values:获取有序字典所有的值,方法和字典是一样的:
values
items:获取有序字典所有的键值对,方法和字典是一样的:
move_to_end:将指定的键值对移动到最后的位置:
move_to_end
clear:清空有序字典的所有键值对:
clear
11、namedtuple:可命名元组,可以给元组命名,在通过元素的名称获取到元素的值,也可以使用元素的下标获取到元素的值:
namedtuple
12、queue.Queue:单向队列,先进先出,类似于弹夹,先放去的子弹先打出来,只能从左边进行操作:
put,get,qsize,full:插入数据,获取数据,查看队列长度,判断队列是否已经满了:
put,get,qsize,full
empty:判断队列是否为空,是返回True,否返回False:
empty
put_nowait:在队列可以插入的时候不阻塞插入数据数据,可以理解为不按排队顺序插队到最前面put数据:
get_nowait:在队队列有时间后不阻塞获取数据,可以理解为不按排队顺序插队到最前面get数据:
put_nowait,get_nowait
13、queue.deque:双向队列,可以左右两侧都进行操作的队列与单向队列最大的不同是可以从队列左右两侧都进行操作,
appendleft:添加元素到最左侧:
append:添加元素做最右侧,即末尾:
append,appendleft
count:统计队列中某个元素出现的次数,而不是某个字符串;
copy:是浅copy,只拷贝第一层,其内部包含的元素和列表的id是一样的
count,copy
extend:对原队列进行右侧扩展,扩展的元素是是字符串,而append附加是元素,一个元素可以包含多个字符串,如果extend传递的一个包含多个字符串的元素,则会展开元素为多个字符串进行添加:
extendleft:对原队列进行左侧侧扩展,其他同extend
extend,extendleft
index:根据value获取其下标位:
insert:将元素插入到指定的下标位置:
insert,index
reverse:将整个队列顺序反转显示,即倒数第一个为第一个,倒数第二个为第二个,一次类推
rotate:将最后指定数量的几个元素放在最前的位置
reverse,rotate
pop:从右侧删除元素并返回被删除的元素
popleft:从左侧删除元素并返回被删除的元素
pop,popleft
remove:根据value删除元素
clear:清空整个队列
remove,clear
二:深浅copy:
copy:称为浅copy,默认的copy都是浅coyp,即没有特定使用深copy的操作,浅copy只copy第一层,即不copy内部的列表、字典或元组(假如有以上元素),可以用元素的id区分
deepcopy:深copy,会copy每一层的元素,包含copy内部的元组、字段或列表
假如copy对象都是字符串:
字符串深浅copy
假如copy对象有列表并修改列表的值:
带层次的列表深浅copy
假如copy对象是字典:
带层次的字典深浅copy
深浅copy总结:
1、假如copy源只是字符串,则深浅copy没有区别,只是copy后变量名称的id值不一样,其内部的元素的id值是一致的。
2、假如copy是列表组成,则会将内部的列表完全copy一份,其内部的元素的id会指向copy源的底层元素,假如对元素做了一份浅copy和深copy,则无论是修改了copy源的底层元素、浅copy的底层元素还是深copy的底层元素,都会影响到元素本身和其他copy的元素改变。
3、假如copy源是字典,则深会对字典的key和value完全copy,浅copy依然是对内部的元素做链接到copy源,修改copy源和浅copy只会影响浅copy源和浅copy,不会影响到深copy,同样修改深copy也不会影响到以上浅copy和浅copy源本身。
三:yield 和return:
yield:是一个生成器,在函数里用于记住上一次的操作,下次在执行的时候从当前的位置继续执行,生成器生成的值需要用for循环才能访问到:
yield
return:函数的返回值,遇到return的时候函数会停止继续运行,并以return的返回值赋值给函数本身,一个函数只能有一个return,多余的也不会执行,因为第一个return之后函数就停止运行了。
return
四:集合(set)
set的元素是不能重复出现的,而且是无序排列的,如创建一个包含重复字串的集合:
创建set
set的常用操作方法:
add:向集合里面添加元素:
remove:删除指定的元素名,且没有返回值
pop:随机删除集合的元素并返回被删除的值
add、remove、pop
clear:清空元素列表:
copy:浅copy为另一个集合:
update:更新现有的集合:
update、copy、clear
difference:用两个集合作比较,删除传递的参数并生成一个新的集合,只返回非传递的集合里没有的元素,并生成一个新的序列,如:
difference
difference_update:删除原集合有并且传递的集合都有的值,这是在原集合直接操作的,删除完成以后查看原集合的值是否有变化:
difference_update
discard:丢弃一个指定的元素:
discard
intersection:交集运算,即取原集合和传递的集合共同都有的元素,并产生一个新的set集合:
intersection
intersection_update:交集运算,即取原集合和传递的集合共同都有的元素,并直接赋值给原集合:
intersection_update
isdisjoint:判断是否没有交集,即判断是否没有同样的元素,没有返回True,有返回False:
isdisjoint
issubset:判断是否子集,即原集合是否传递集合的子集:
issubset
issuperset:与issubset相反,判断是否父集:
issuperset
symmetric_difference:取出来两个集合相互没有的元素,并将结果赋值给一个新的集合:
symmetric_difference
symmetric_difference_update:取出来两个集合相互没有的元素,并将结果赋值给原集合而不是赋值给一个新的集合:
union:去两个几个的并集,等于将两个集合的元素全部取出来并去重,最终每个元素只留一个:
union
有一个数据,需要通过集合的方式计算出需要更新、添加和删除的数据,最终要求是原来的没有新数据有就添加,原来有新的也有就更新,原来有新的没有删除,具体如下:
set集合小试牛刀
python成长之路——第三天的更多相关文章
- python成长之路第三篇(1)_初识函数
目录: 函数 为什么要使用函数 什么是函数 函数的返回值 文档化函数 函数传参数 文件操作(二) 1.文件操作的步骤 2.文件的内置方法 函数: 一.为什么要使用函数 在日常写代码中,我们会发现有很多 ...
- python成长之路第三篇(4)_作用域,递归,模块,内置模块(os,ConfigParser,hashlib),with文件操作
打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.作用域 2.递归 3.模块介绍 4.内置模块-OS 5.内置模块-ConfigParser 6.内置模块-has ...
- python成长之路第三篇(3)_内置函数及生成器迭代器
打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.lambda表达式 2.map内置函数 3.filter内置函数 4.reduce内置函数 5.yield生成器 ...
- python成长之路第三篇(2)_正则表达式
打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.什么是正则表达式,python中得正则简介 2.re模块的内容 3.小练习 一.什么是正则表达式(re) 正则表 ...
- 我的Python成长之路---第三天---Python基础(12)---2016年1月16日(雾霾)
四.函数 日常生活中,要完成一件复杂的功能,我们总是习惯把“大功能”分解为多个“小功能”以实现.在编程的世界里,“功能”可称呼为“函数”,因此“函数”其实就是一段实现了某种功能的代码,并且可以供其它代 ...
- 我的Python成长之路---第三天---Python基础(11)---2016年1月16日(雾霾)
三.深浅拷贝 在Python中将一个变量的值传递给另外一个变量通常有三种:赋值.浅拷贝以及深拷贝 讨论深浅拷贝之前我们把Python的数据类型分为基本数据类型包括数字.字符串.布尔以及None等,还有 ...
- 我的Python成长之路---第三天---Python基础(13)---2016年1月16日(雾霾)
五.Python的常用的内置函数 Python为我们准备了大量的内置函数,如下图所示 这里我们只讨论红框内的内置函数 abs(x) 返回一个数的绝对值(模),参数可以是真说或浮点数 >>& ...
- 我的Python成长之路---第三天---Python基础(10)---2016年1月16日(雾霾)
二.collections collections是对Python现有的数据类型的补充,在使用collections中的对象要先导入import collections模块 1.Counter——计数 ...
- 我的Python成长之路---第三天---Python基础(9)---2016年1月16日(雾霾)
一.集合 set和dict类似,也是一组key的集合,但不存储value.由于key不能重复,所以,在set中,没有重复的key. 集合和我们数学中集合的概念是一样的,也有交集,并集,差集,对称差集等 ...
随机推荐
- FPGA知识大梳理(四)FPGA中的复位系统大汇总
本文整合特权(吴厚航)和coyoo(王敏志)两位大神的博文.我也很推崇这两位大神的书籍,特权的书籍要偏基础一下,大家不要一听我这么说就想买coyoo的.我还是那一句话,做技术就要step by ste ...
- 扩展ASP.NET MVC HtmlHelper类
在这篇帖子中我会使用一个示例演示扩展ASP.NET MVC HtmlHelper类,让它们可以在你的MVC视图中工作.这个示例中我会提供一个简单的方案生成Html表格. HtmlHelper类 Htm ...
- 【零基础学习iOS开发】【01-前言】01-开篇
本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...
- VS2010/MFC对话框:非模态对话框的创建及显示
非模态对话框的创建及显示 上一节讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切 ...
- Android开发小记
一,下载解压adt-bundle,直接可以用来开发了二,新建android项目时不勾选创建activity,来看看如何手动创建activity1,在空项目添加class文件,选择超类为activity ...
- SVN 让项目某些文件不受版本控制
@echo On @Rem 删除SVN版本控制目录 @PROMPT [Com] @for /r . %%a in (.) do @if exist "%%a\.svn" rd /s ...
- linux目录对照命令——meld
preface:也不算是非常大的事情,但也须要这么个东西.对照两个目录里的内容是否同样,知道差异在哪里.找出问题所在,vimdiff 仅仅能比較两个文件是否同样,比較不了目录,只是能够写个bash脚本 ...
- DontDestroyOnLoad(Unity3D开发之五)
Unity中我们从A场景切换到B场景的时候,A场景全部对象都会销毁,但有时候我不须要销毁某些东西. 比方一个简单的游戏的背景音乐,我不须要多次反复创建,多个场景播放这一个即可了.这个时候就须要用到Do ...
- 具体解释coredump
一,什么是coredump 我们常常听到大家说到程序core掉了,须要定位解决,这里说的大部分是指相应程序因为各种异常或者bug导致在执行过程中异常退出或者中止,而且在满足一定条件下(这里为什么说须要 ...
- Android Studio导出Jar包
这篇博客将介绍一下如何用Android Studio导出jar包,希望能给大家带来帮助. 首先需要修改build.gradle文件,在Android Studio中会显示多个build.gradle文 ...