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. 集合和我们数学中集合的概念是一样的,也有交集,并集,差集,对称差集等 ...
随机推荐
- ORACLE备份手记
嘛的,最近一直写EPOLL的游戏服务端搞的头晕,BOSS说了要备份ORACLE,由于DBA离职了,搞这个事情搞的很蛋疼,关掉实例后备份数据库各种连接不到实例,本来今晚要完成泡泡堂游戏的DX版的,郁闷 ...
- IOS 学习笔记(4) 控件 标签(UILabel)的使用方法
虽说Label的中文翻译是标签标记,但它其实是一个静态文本内容的展现控件. 一般来说,UILabel只是一个只读的文本视图,开发者可以利用UiLabel来展示内容长度有固定上限的文字内容.并且,UIL ...
- AnyEvent::HTTP 实现异步请求
异步http: jrhmpt01:/root/async# cat a1.pl use LWP::UserAgent; use utf8; use DBI; use POSIX; use HTTP:: ...
- 【LeetCode】Flatten Binary Tree to Linked List
随笔一记,留做重温! Flatten Binary Tree to Linked List Given a binary tree, flatten it to a linked list in-pl ...
- hdoj 2896 病毒侵袭(AC自动机)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2896 思路分析:题目为模式匹配问题,对于一个给定的字符串,判断能匹配多少个模式:该问题需要静态建树,另 ...
- Poj 2232 Moo Volume(排序)
题目链接:http://poj.org/problem?id=2231 思路分析:先排序,再推导计算公式. 代码如下: #include <iostream> #include <a ...
- Windows最常用的几个网络CMD命令总结
Windows最常用的几个网络CMD命令总结 http://www.cnblogs.com/sbaicl/archive/2013/03/05/2944001.html 一.ping 主要是测试本机T ...
- mac下面xcode+ndk7配置cocos2dx & box2d的跨ios和android平台的游戏教程
这篇教程是介绍如何使用cocos2d-x和box2d来制作一个demo,且此demo能同时运行于ios和android平台.在继续阅读之前,建议您先阅读上一篇教程. 首先,按照上一篇教程,搭建好mac ...
- 基础算法-查找:线性索引查找(II)
索引查找是在索引表和主表(即线性表的索引存储结构)上进行的查找. 索引查找的过程是: 1)首先根据给定的索引值K1,在索引表上查找出索引值等于K1的索引项,以确定对应子表在主表中的开始位置和长度. 2 ...
- java web中jsp连接mysql数据库 以及数据库连接池的使用
将mysql-connector-java-5.1.6-bin.jar导入到tomcat的lib目录下. 在java项目中,只需要引入mysql-connector-java-5.1.6-bin.ja ...