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. 集合和我们数学中集合的概念是一样的,也有交集,并集,差集,对称差集等 ...
随机推荐
- this function has none of deterministic, no sql,or reads sql data in its declaration and binary logging is enabled
原址:http://blog.chinaunix.net/uid-20639775-id-3031821.html This function has none of DETERMINISTI ...
- https tomcat 证书搭建
首先生成证书说明 keytool -genkey -alias castest -keyalg RSA -keystore c:/keys/caskey 先让输入密码,密码必须记住,下面会用到 其中“ ...
- [转] iOS多线程编程之NSOperation和NSOperationQueue的使用
<iOS多线程编程之NSThread的使用> 介绍三种多线程编程和NSThread的使用,这篇介绍NSOperation的使用. 使用 NSOperation的方式有两种, 一种是用定义好 ...
- IOS 表视图(UITableVIew)的使用方法(2)名单的分段显示
我们可以采用名字分段法,名字分段会在之后的小节中显示,这是转而使用球员的角色分段发,以最直接的入手点讲解好UITableView的分段使用方法.本节示例时基于上节的SimpleTableViewCon ...
- C#调用matlab出错r6034错误解决方法[转载]
在c#调用MATLAB时,在运行第一次会出现r6034错误. 解决方法如下: 1.在MCR安装目录下D:\Program Files\MATLAB\MATLAB Compiler Runtime\v7 ...
- c++实现精确计时
//获取比較准确是程序执行时间 #include<iostream> #include<windows.h> using namespace std; int main(voi ...
- jvm的内存区域简介
1.内存区域划分 jvm在执行java程序过程中会将管理的内存划分成若干不同的数据区域,他们分别是程序计数器,堆,方法区,虚拟机栈,本地方法栈. 1.1指令计数器 指令计数器是线程私有的,每个线程都有 ...
- javascripts小结
1 NAN-isNaN():判断是否数值 2 数值转换 Number()-任何数据类型,parseInt(),parseFloat()-字符串 3数组转字符串 var a=["red&quo ...
- 总线接口与计算机通信(四)USB外部总线(初级认识)
USB简介 USB是英文Universal Serial BUS(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,是应用在PC领域的接口技术.USB接口支持设备的即插 ...
- 杭电ACM 偶数求和
偶数求和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...