set

Collections系列:

Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型:

一、计数器:

Counter 是对字典的加工处理,功能是计算序列中元素出现的次数。

 import collections

 import collections
obj = collections.Counter('testttteseess')
print (obj)
> Counter({'t': 5, 's': 4, 'e': 4}) # 统计各字符出现次数,并生成伪字典,key 是传入的元素,value 为元素出现的次数 obj = collections.Counter('testttteseess')
print (obj.most_common(5)) # 统计出现频率最高的5个字符,返回其值
> [('t', 5), ('e', 4), ('s', 4)]

elements    enumerate

二、有序字典(orderedDict):

对字典功能的一个补充,在字典原有方法上,补充了一些方法,这些方法封装在 collections 中的 orderedDict 中。

默认使用 dict 时,key是无序的,在对dict 做迭代时,无法确定key 的顺序。

OrderedDict 的 key 会按照插入的顺序排列,而不是 key 本身排列。

内部原理:将字典的 key 放进有序的列表,再拿列表中的 key 去取字典中对应的 value。

 # Python 内部即靠这种原理实现的字典有序

 dic = {'name':'jay','sex':'boy','age':'','xxx':''}
for i in dic: # 每循环一次取出一个 key ,根据key 去字典中取对应值
print (dic[i])
 import collections
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k3'] = 'v3'
dic['k2'] = 'v2'
print (dic()) # 无论取多少次,输出的顺序不会变。
> OrderedDict([('k1', 'v1'), ('k3', 'v3'), ('k2', 'v2')]) # for 循环取出所有 key 与对应 value
for k,v in dic.items():
print (k,v) > k1 v1
> k3 v3
> k2 v2

move_to_end():将指定的 key 移至字典最后位置

 import collections
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k3'] = 'v3'
dic['k2'] = 'v2'
dic.move_to_end('k1') # 将 k1 与 k1 对应的值,移至字典最后
print (dic)
> OrderedDict([('k3', 'v3'), ('k2', 'v2'), ('k1', 'v1')]) # 此时 k1 已经在字典最后

popitem():后进先出,取出字典中最后一个 key 与其对应的 value

 import collections
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k3'] = 'v3'
dic['k2'] = 'v2'
ret = dic.popitem() #移除并将返回值赋值给 ret 变量
print (dic)
print (ret)
> OrderedDict([('k1', 'v1'), ('k3', 'v3')]) # 原字典中内容
> ('k2', 'v2') # 移除并返回的内容

pop:移除指定 Key,并返回其 value

 import collections
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k3'] = 'v3'
dic['k2'] = 'v2'
ret = dic.pop('k2') # 指定移除 k2
print (dic)
print (ret)
> OrderedDict([('k1', 'v1'), ('k3', 'v3')])
> v2 # 此处返回的是 k2 的值

setdefault(key,value):如果键不存在于字典中,则添加其 key 并将其值设定为默认值

 import collections
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic.setdefault('k6','v8') # k6 不存在于字典中,会向字典中添加 k6
print (dic)

## 字典循环时,默认循环只输出出字典的 key。。。

三、默认字典(defaultdict):

 import collections
dic = collections.defaultdict(list)
dic['k1'].append('jay')
print (dic)

四、可命名元组(namedtuple):

对元组的一个扩展,默认元组只能通过 [0]、[2] 这种索引去访问,可以将元组的值命名,访问元组的某个值时,可通过名字访问,x y 轴类似于这种。

 # 导入模块
import collections
# 创建类,类名为 MytupleClass:
MytupleClass = collections.namedtuple('MytupleClass',['x','y','z']) obj = MytupleClass(11,22,33) # obj 就是根据 MytupleClass 类创建的对象
print (obj.x) # 通过可命名元组的 name 访问其内容。
print (obj.y) # 通过可命名元组的 name 访问其内容。
print (obj.z) # 通过可命名元组的 name 访问其内容。
> 11
> 22
> 33

五、队列 Queue:


深浅拷贝:

函数:

定义函数,函数在没有被调用时,不会被 Python 解释器所执行。

 # 定义函数
def hello():
print "hello"
print "world"
print "hello" # 执行函数,当函数被执行时,才会被 Python 解释器所解释
hello()

return:

 def  show():     # 定义一个名为 show 的函数。
print ("a")
if 1 == 2: # 此判断永远不会被满足
return [11,22,33] # 当函数执行遇到 return 时,执行 return 代码并退出此函数(return 后的代码不会被执行)。
print ("b") ret = show() # 执行函数 show 并将返回值赋值给 ret,函数默认返回 None
print (ret) # 输出函数返回的内容。
> a # 函数 show 输出的内容 a
> b # 函数 show 输出的内容 b
> None # if 永远为假, return 没有被执行所以保存 show的返回值变量 ret 值为空,打印出 None

return:

 def  show():     # 定义一个名为 show 的函数。
print ("a")
if 1 == 1: # 此判断永远被满足
return [11,22,33] # 当函数执行遇到 return 时,执行 return代码并退出此函数(return 后的代码不会被执行)。
print ("b") ret = show() # 执行函数 show 并将返回值赋值给 ret ,函数默认返回 None
print (ret) # 输出函数返回的内容。
> a # 函数 show 输出的内容 a
> [11,22,33] # ret 变量保存的 函数 show return 出来的值。

形式参数与实际参数:

无参数:

show ()     # 函数执行时,() 为空代表无参数

一个参数:

 def args_arg(arg):    # (arg) 为形式参数
print (arg) # 打印传递进来的形式参数 args_arg("test vars") # 执行 args_arg 函数,并传递参数 () 中内容为实际参数
> test vars

两个参数:

 def  show(arg_1,arg_2):
print (arg_1,arg_2) show("hello",456) # 传递的实际参数个数,必须与函数中定义的形式参数个数相等
> hello 456

Python Day03的更多相关文章

  1. My way to Python - Day03

    列表和字典的赋值 dict1 = {} dict1['k1'] = 'v1' list1 = [] list1.append('v1') 集合系列 1,计数器 Python 2.7.6 (defaul ...

  2. python———day03

    一.字符串格式化输出: 占位符    %s(字符串) %d(整数) %f(浮点数,约等于小数) name = input("Name:") age = input("Ag ...

  3. python day03笔记总结

    2019.3.29 S21 day03笔记总结 昨日回顾及补充 1.运算符补充 in not in 2.优先级 运算符与运算符之间也有优先级之分 今日内容 一.整型(int) py2 与 py3 的区 ...

  4. python day03作业

  5. 我的Python之旅第三天

    一 编码操作 1 编码 enconde() 英文字符编码为"utf-8"时,一个字符占一个字节. s1='abcdef' b1=s1.encode('utf-8') print(b ...

  6. 【转】Python 内置函数 locals() 和globals()

    Python 内置函数 locals() 和globals() 转自: https://blog.csdn.net/sxingming/article/details/52061630 1>这两 ...

  7. python操作haproxy.cfg文件

    需求 1.查 输入:www.oldboy.org 获取当前backend下的所有记录 2.新建 输入: arg = { 'bakend': 'www.oldboy.org', 'record':{ ' ...

  8. Python基础-day03

    写在前面 上课第三天,打卡:  不要让干净的灵魂染上尘埃,永远年轻.永远热泪盈眶 一.再谈编码 - 文件的概念 '文件' 是一个抽象的概念,是操作系统提供的外部存储设备的抽象,对应底层的硬盘:它是程序 ...

  9. python开发学习-day03(set集合、collection系列 、深浅拷贝、函数)

    s12-20160116-day03 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

随机推荐

  1. [POJ2420]A Star not a Tree?(模拟退火)

    题目链接:http://poj.org/problem?id=2420 求费马点,即到所有其他点总和距离最小的点. 一开始想枚举一个坐标,另一个坐标二分的,但是check的时候还是O(n)的,复杂度相 ...

  2. Freemarker中日期时间格式出错

    今天遇到一个奇怪的问题.同事访问我电脑发布的程序页面,freemarker日期格式报错.而其他电脑访问则没有问题. 先贴出错误信息. FreeMarker template error The str ...

  3. 转载ali面

    引言 首先声明,不要再问LZ谁是林萧,林萧就是某著名程序员小说的主角名字. 写这篇文章的目的其实很简单,算是对之前LZ一篇文章的补充和完善. 之前LZ写过一篇<回答阿里社招面试如何准备,顺便谈谈 ...

  4. Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式

    android线程池的理解,晚上在家无事 预习了一下android异步加载的例子,也学习到了一个很重要的东东 那就是线程池+缓存  下面看他们的理解.[size=1.8em]Handler+Runna ...

  5. python3 文件增删查

    #Author by Andy#_*_ coding:utf-8 _*_import sysimport timePath="E:\my python study\\files\haprox ...

  6. git的常用命令

    简介  上篇讲解git的博客,在centos6.5中安装完成了github客户端,接下来我们来熟悉git的操作命令 1.查看自己机器中安装的git版本 [root@jacky conf]# git - ...

  7. 理解HTTP幂等性

    转载: 理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式.无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API ...

  8. 【转】Centos升级Python 2.7.12并安装pip、ipython

    Centos系统一般默认就安装有Python2.6.6版本,不少软件需要2.7以上的,通过包管理工具安装不了最新的版本,通过源码编译可以方便安装指定版本,只需要把下面版本的数字换成你想要的版本号. 1 ...

  9. css学习笔记 7

    background-position属性值为百分比的时候,第一个百分比表示水平方向的距离,第二个表示垂直方向上的距离. text-indent的主要作用是为段落设置首行缩进,只能应用于块级元素.该属 ...

  10. 神经网络模型之AlexNet的一些总结

    说明: 这个属于个人的一些理解,有错误的地方,还希望给予教育哈- 此处以caffe官方提供的AlexNet为例. 目录: 1.背景 2.框架介绍 3.步骤详细说明 5.参考文献 背景: AlexNet ...