标签:
范例一:
练习:元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {‘k1‘: 大于66 , ‘k2‘: 小于66}
范例二:
一:collection系列
1:计数器:(Counter )
Counter是对字典类型的补充,用于追踪值的出现次数。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#导入模块
import collections
collections.Counter
#传一个字符串
1 c = collections.Counter(‘fegfdsagerqfads‘) 2 print c 3 #结果:Counter({‘f‘: 3, ‘a‘: 2, ‘e‘: 2, ‘d‘: 2, ‘g‘: 2, ‘s‘: 2, ‘q‘: 1, ‘r‘: 1})
#传一个列表
d1 = [11,22,33,111,22,33,11]
d = collections.Counter(d1)
print d
#传一个元组
e = (‘aa‘,‘bbb‘,‘aa‘,‘b‘)
e1 = collections.Counter(e)
print e1
#迭代器
for item in c.elements():
print item
2:有序字典
有序字典和字典是一样的,只不过有序字典在内部使用
它是将他所有的KEY放在一个列表中,列表是有序的,这样有序字典输出的内容就是有序的。
有序字典支队第一层生效。但是你可以把内部的字典继续进行
3、默认字典(defaultdict)
1 obj_file = open(‘1.txt‘,‘r+‘) 2 3 obj_file.seek(3) 4 5 obj_file.truncate() 6 7 #不加则是将指针后面的全部删除 8 9 read_lines = obj_file.readlines() 10 11 print read_lines 12 13 结果: 14 15 [‘123‘]
#使用默认字典,定义默认类型为list,
1 dic1 = {‘k1‘:[]} 2 dic2 = collections.defaultdict(list) #可以定义list,元组,字典都行 3 dic1[‘k1‘].append(1)
4、可命名元组(namedtuple)
import collections
#创建一个扩展元组tuple的类(主要用在坐标上)
#原始的元组的创建
5、双向队列(deque)
两端都可以取、插。
线程安全。
6:单向队列
队列,FIFO
栈,弹夹
线程安全的
二:迭代器和生成器
1:迭代器
对于Python 列表的 for 循环,他的内部原理:查看下一个元素是否存在,如果存在,则取出,如果不存在,则报异常 StopIteration。(python内部对异常已处理)
实例:next函数的应用
2:生成器
range不是生成器 和 xrange 是生成器
readlines不是生成器 和 xreadlines 是生成器
生成器内部基于yield创建,即:对于生成器只有使用时才创建,从而不避免内存浪费
3:冒泡算法
有如下列表
[13, 22, 6, 99, 11]
请按照一下规则计算:
13 和 22 比较,将大的值放在右侧,即:[13, 22, 6, 99, 11]
22 和 6 比较,将大的值放在右侧,即:[13, 6, 22, 99, 11]
22 和 99 比较,将大的值放在右侧,即:[13, 6, 22, 99, 11]
99 和 42 比较,将大的值放在右侧,即:[13, 6, 22, 11, 99,]
13 和 6 比较,将大的值放在右侧,即:[6, 13, 22, 11, 99,]
3.1思考
a = 1 , b = 2 , 如何才能让a与b的赋值相互转换呢?
3.2:实例
三:函数
种类:内置函数、自定义函数、导入(第三方)函数
函数声明,不自动执行;调用后才执行
函数的参数
1 vars()=====当前模块的所有变量 2 print vars() 3 print __doc__ #打印当前文件的注释 4 print __name__ 5 if __name__ == ‘__main__‘: #确认是不是主函数 6 print ‘这是主函数‘ 7 print __file__ #打印文件的路径 8 all()接受一个序列,判断所有的值都是真则返回值,否则为假 9 any()只要有一个是真就是真,全部是假才为假 10 li = [‘ccc‘,‘ ‘,15] 11 print all(li) 12 print any(li) 13 lli = [‘‘] 14 print any(lli) 15 enumerate() 16 li = [11,22,33,44,55] 17 for k,v in enumerate(li): 18 print k,v 19 #默认从0开始,指定从1开始 20 for k,v in enumerate(li,1): 21 print k,v
1:常用的内置函数
函数式编程和面向过程编程的区别:
函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
面向对象:对函数进行分类和封装,让开发"更快更好更强..."
函数式编程最重要的是增强代码的重用性和可读性
2:函数的定义和使用
def 函数名(参数):
函数体
函数的定义主要有如下要点
1:def:表示函数的关键字
2:函数名:函数的名称,日后根据函数名调用函数
3:函数体:函数中进行一系列的逻辑的计算
4:参数:为函数体提供数据
5:返回值:当函数执行完毕后,可以给调用者返回数据
3:参数:(形参和实参)
普通参数
普通参数必须传参
1 # ######### 定义函数 ######### 2 # name 叫做函数func的形式参数,简称:形参 3 def func(name): 4 print name 5 # ######### 执行函数 ######### 6 # ‘曹小贱‘ 叫做函数func的实际参数,简称:实参 7 func(‘曹小贱‘)
默认参数
1:不传;则使用默认值
2:默认参数必须放在参数列表的最后,也可以有多个默认参数
1 def func(name, age = 18): 2 print "%s:%s" %(name,age) 3 # 指定参数 4 func(‘曹小贱‘, 19) 5 # 使用默认参数 6 func(‘曹小贱‘)
注:默认参数需要放在参数列表最后
动态参数
1:def func(*args): 可以接收元组和列表
2:内部自动构造元组
3:如果传递的是序列,可以使用*来避免内部构造元组
4:def func(**kwargs): 可以接收字典
动态参数1:
动态参数2:
动态参数3:
4:邮件报警
范例一:
范例二:
四:文件操作
1:基础知识
操作文件的步骤:
打开文件-----操作文件-----关闭文件
打开方式:
obj_file = open(‘path‘,‘mode‘)
也有file的方式打开,但是open是调用file方式来执行的,推荐使用open
打开模式:
r:只读模式(默认)
w:只写模式,不可读;不存在则创建文件,存在则删除其中的内容
a:追加模式,可读,不存在则创建,存在则追加,但是会在指针的位置后面添加(下面会讲到指针的位置)
r+:可读写文件,还可以追加(一般常用)
U:表示在读取时,可以将\r\n \r\n自动转换成\n(一般与r、r+一起使用)
2:操作文档
3:例子
file.tell
显示指针所在的位置
file.seek
将指针放在执行的位置
file.truncate
截取数据
原文件内容是:1234567
方式一:
方式二:
方式三:
解析:
方式一是从文件开始,使用truncate,没有指定size,则将指针后面的全部删除。
方式二是从指针位置3开始删除。但是原文件中的前面的123还存在
方式三是指定size大小,仅仅保留前三个位置,打印出前面的123,且还存在在原文件中
4:with
with的出现是为了避免打开文件后忘记关闭文件,而造成进程占用。
使用方式:
with open(‘db‘,r) as read_file:
with open(‘db1‘) as read_file1,open(‘db2‘) as read_file2:
标签:
原文地址:http://www.cnblogs.com/kevingrace/p/5569752.html