Python学习总结
1.如果自己所得答案与所给答案不一致,直接在编译器中执行;如果所给答案正确,重新分析执行过程
2.如果运行出错,一个语句一个语句的调试
3.遇到错误上网查询
数据类型
整数int,布尔型bool,字符串str,列表list[],元组tuple(),字典dict{}
1. list:[]
- 有序集合
- 可变数据类型
- append()、insert()、修改、删除(del、remove、pop)
- list.insert(index,obj)
count():可以统计某个元素在列表中出现了多少次
>>>[‘a’,‘iplaypython.com’,‘c’,‘b’,‘a’].count(‘a’)
2
insert():可以将要添加的对象,插入到指定的位置中
- 列表与方法之间用点号相隔,括号内需要添入的参数分别是索引和要插入的元素
append列表添加方法被调用后,返回的列表不仅仅是一个添加过元素后的新列表,而是把原有的列表做了修改,id不变。并且新添加的元素是追加到原列表数据的末尾,append方法也被叫做列表追加操作。
append()只能添加一个值
extend():是把新参数添加到原有列表中,id不变,相当于原地修改
extend方法可以在列表尾部追加包含多个值的另一个序列
- extend()和加号+连接操作符的区别:
>>>list1 = [1,2,3]
>>>list2 = [7,8,9]
>>>list1.extend(list2)
>>>list1
[1, 2, 3, 7, 8, 9]
- extend方法是把元素添加到了list1中,相当于扩展(修改)list1的数据,但id没有改变。如果用+号连接的话,得到的是一个新列表,不能被引用的值
>>>list1 = [1,2,3]
>>>list2 = [7,8,9]
>>>list1 + list2
[1, 2, 3, 7, 8, 9]
>>>list1
[1, 2, 3]
- 列表推导式标准格式:
[ 表达式 for 变量 in 列表]
如果需要加入if条件语句则是:
[表达式 for 变量 in 列表 if 条件]
pop():用来做删除列表中的指定对象时,会返回要删除元素的值(如果没有指定对象,默认是最后一个值)
index():查找参数时,如果参数存在,返回索引位置;如果参数不存在,则报错
2. tuple:()
- 有序集合
- 不可变数据类型(整型int、字符串str’ '、元组tuple())
- 重新赋值后才能被引用
x=([‘Hello’,123],456,-789)
x[0]=[‘Hello’,123]
x[1]=456
x[2]=-789
x[0][1]=123
3. dict:{}
- 无序的集合
- 可变数据类型
新值所对应的键名;如果存在,就是修改;如果不存在,就相当于添加操作
字典删除方法:clear()、pop()和popitem()
- clear()方法是用来清除字典中的所有数据,因为是原地操作,所以返回None(也可以理解为没有返回值)
- 当原字典被引用时,想清空原字典中的元素,用clear()方法,a字典中的元素也同时被清除了
>>>f = {‘key’:‘value’}
>>>a = f
>>>a
{‘key’: ‘value’}
>>>f.clear()
>>>f
{}
>>>a
{}
- 移除字典数据pop()方法的作用是:删除指定给定键所对应的值,返回这个值并从字典中把它移除。注意字典pop()方法与列表pop()方法作用完全不同
>>>x = {‘a’:1,‘b’:2}
>>>x.pop(‘a’)
1
>>>x
{‘b’: 2}
- 字典popitem()方法作用是:随机返回并删除字典中的一对键和值(项)。为什么是随机删除呢?因为字典是无序的,没有所谓的“最后一项”或是其它顺序。在工作时如果遇到需要逐一删除项的工作,用popitem()方法效率很高
>>>x
{‘url’: ‘www.iplaypy.com’, ‘title’: ‘python web site’}
>>>x.popitem()
(‘url’, ‘www.iplaypy.com’)
>>>x
{‘title’: ‘python web site’}
- items方法作用:是可以将字典中的所有项,以列表方式返回
- 字典items()操作方法:
>>>x = {‘title’:‘python web site’,‘url’:‘www.iplaypy.com’}
>>>x.items()
[(‘url’, ‘www.iplaypy.com’), (‘title’, ‘python web site’)]
从结果中可以看到,items()方法是将字典中的每个项分别做为元组,添加到一个列表中,形成了一个新的列表容器
- iteritems方法作用:与items方法相比作用大致相同,只是它的返回值不是列表,而是一个迭代器
4. type():
对象数据类型查询方法
5. str():
把原本不是字符串类型的数据变成字符串类型
6. 修改/删除:
重新创建一个字符串
7. 切片
- x[0:]
- x[0:-1]
- x[0:3]不包括3
- x[::2]:每N个取一个
eg:
L=[‘A’,‘L’,‘B’,‘P’]
-4,-3,-2,-1
L[-2:]=‘B’,‘P’
L[:-2]=‘A’,‘L’
L[-3:-1]=‘L’,‘B’
L[-4 : -1 : 2]=‘A’,‘B’
注:切片,结束索引不包含
8.set()
- add():把要传入的元素作为一个整个添加到集合中
- update():把要传入的元素拆分,作为个体传入到集合中
- remove()
- 相对补集(差集):
A-B:元素属于A不属于B
9. 变量名
- 包括字母、数字、下划线,但数字不能作为开头
- 关键字不能作为变量名使用
- 除下划线外,其他符号不能作为变量名使用
- 变量名区分大小写
10.import 导入模块
在用import语句导入模块时最好按照这样的顺序:import 标准库、第三方模块、自定义模块
from……import:导入指定的模块内的指定函数方法
11.函数
- help():查看函数或模块用途的详细说明
- dir():查看函数或模块内的操作方法都有什么,输出方法列表
- open():'r’读模式、'w’写模式、'a’追加模式、‘b’二进制模式、’+'读/写模式
- write()
- read():读取全部内容
- readline():逐行读取
12.注释
- 单行注释:#
- 多行注释:‘’’ ‘’’
13.continue
跳过剩余循环体,但并不结束循环,跳到最近所在循环体首行
14.pass
1.空语句,什么也不做
2.在特别的时候用来保证格式或语义的完成性
15.global
全局变量
16.assert
- assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假
- raise-if-not
- assert 的异常参数,就是在断言表达式后添加字符串信息,assert 表达式[,参数]
17.print
输出在一行:print i,
18.while语句/if语句区别
1.if语句是条件为真true,就会执行一次相应的代码块
2.while中的代码会一直循环,直到循环条件不满足不再为真
- while:计数循环中
- if 条件:
- elif 条件:
- else:
注:
1.else、elif为子块,不能独立使用
2.一个if语句中可以包含多个elif语句,但结尾只能有一个else语句
3.else在while、for循环语句中的作用:
python中,可以在while和for循环中使用else子句,它只是在循环结束之后才会被执行,如果同时使用了break语句那么else子句快会被跳过。所以注意else子句和break语句不能同时使用。
19.匿名函数lambda:
- 一种生成函数对象的表达式形式
1.创建了可以被条用的函数,它返回了函数,而并没有将这个函数命名
f=lambda a,b,c:a+b+c
2.不需要return来返回值,表达式本身结果就是返回值
3.lambda是一个表达式,而非语句
4.快速定义单行的最小函数
5.让代码更加简洁,使用它可以省去函数定义的过程
6.对只需使用一次的函数用lambda定义,可以省去函数命名问题
7.清晰明了
lambda和def区别:
- 相同点:
1.可以定义一些固定的方法或是流程
- 不同点:
1.def是语句,lambda是表达式
2.根据某个条件来定义方法只能用def
3.在python表达式操作,只能用lambda
20.python re模块重要函数变量
1.compile()根据正则表达式字符串,创建模式的对象。
2.search() 在字符串中寻找模式。
3.match() 在字符串开始处匹配模式。
4.split() 根据模式的匹配项来分割字符串。
5.indall() 显示出字符串中模式的所有匹配项。
6.sub(old,new)方法的功能是,用将所有old的匹配项用new替换掉。
7.escape() 将字符串中所有特殊正则表达式字符转义
21. time
#coding=utf-8
#首先导入time模块
import time
#返回当前时间的时间戳
print time.time()
#将当前时间戳转换为当前时区的struct_time
print time.localtime()
#返回的进程时间
print time.clock()
#把一个表示时间的元组表示为这种形式:‘Sat Dec 14 11:12:26 2013’
print time.asctime()
#按我们指定的要求格式来输出,时间(年月日)
print time.strftime(“%Y-%m-%d”, time.localtime())
结果:
1517991350.31
time.struct_time(tm_year=2018, tm_mon=2, tm_mday=7, tm_hour=16, tm_min=15, tm_sec=50, tm_wday=2, tm_yday=38, tm_isdst=0)
2.1129900288e-06
Wed Feb 07 16:15:50 2018
2018-02-07
- 序列化 pickle.dump(对象, 文件,[使用协议])
- 提示:将要持久化的数据“对象”,保存到“文件”中,使用有3种,索引0为ASCII,1是旧式2进制,2是新式2进制协议,不同之处在于后者更高效一些。
默认的话dump方法使用0做协议
- 反序列化pickle.load(文件)
- 提示:从“文件”中,读取字符串,将它们反序列化转换为Python的数据对象,可以正常像操作数据类型的这些方法来操作它们
22.json
- json模块编码
使用json.dumps方法,将一个Python数据类型列表进行json格式的编码解析,
示例如下:
>>>import json #导入python 中的json模块
>>>l = [‘iplaypython’,[1,2,3],{‘name’:’xiaoming’}] #创建一个列表list l
>>>encoded_json=json.dumps(l)#将l列表,进行json格式化编码
>>>print repr(i)
>>>print encoded_json #输出结果
- json模块解码
解码python json格式,可以用这个模块的json.loads()函数的解析方法,
示例如下:
>>>decode_json = json.loads(encoded_json)
>>>print type(decode_json)#查看一下解码后的对象类型
>>>print decode_json #输出结果
23.为什么要使用break:
1.给程序带来更高的效率
2.减少一些不必要的执行