python总结
Python基础教程 学习总结
1. 导入模块
- “模块.函数”(优先使用)
-
import math math.sqrt(9)
- 在确定不会导入多个同名函数时,可以使用 “from 模块 import 函数” 方式
from math import sqrt sqrt(9)
- 还可以使用变量来引用函数
-
foo=math.sqrt foo(9)
2. 字符串表示 str repr
- str() 输出对用户比较友好
-
>>> print str(10000L) 10000
- repr() 输出对python解释器比较友好,该函数得到的字符串通常可以用来重新获得该对象,即 obj == eval(repr(obj))
-
>>> print repr(10000L) 10000L
3. 列表可以修改,元组不能修改。一般来说,在几乎所有情况下列表都可以替代元组(例外情况是使用元组作为字典的键,因为键不能修改)。
4. 列表 extend()与连接操作
- extend() 修改了被扩展的序列。
-
>>> a=[1,2,3] >>> b=[4,5,6] >>> a.extend(b) >>> a [1,2,3,4,5,6]
- 连接+操作则返回一个全新的列表,不修改原列表。
-
>>> a=[1,2,3] >>> b=[4,5,6] >>> a+b >>> [1,2,3,4,5,6] >>> a [1,2,3]
5. 列表排序 sort() 和 sorted()
- sort() 用于在原位置对列表进行排序。
-
>>> x=[4,6,5] >>> x.sort() >>> x [4,5,6]
>>> y=x.sort()
>>> print y
None - sorted() 不是原地操作
-
>>> x=[4,6,5] >>> y=sorted(x) >>> x [4,6,5] >>> y [4,5,6]
6. 元组表示
一个元组的值必须加个逗号
-
>>> 42 42 >>> (42) 42 >>> 42, (42,)
7. 格式化字符串,使用%实现
-
>>> "%s plus %s equals %s" % (1,2,3) 5
>>> phone = {'Tom':'9980'}
>>> 'his number is %(Tom)' % phone
8. 字符串常用方法
- find(), 查找子串
- split(), 切割字符串
- join(), 是split()的逆方法
-
>>> '+'.join(['1','2','3']) 1+2+3
- replace(), 替换所有匹配的字符串
- translate(), 与replace()类似,只是translate()只处理单个字符,并可以同时进行多个替换。
-
>>> from string import maketrans >>> table = maketrans('ts','kz') >>> 'this is a test'.translate(table) 'khiz iz a kezk'
- strip(), 去除两侧指定的字符(默认为空格)
9. 字典方法
- clear(), 清空字典, 原地操作
- copy(), 浅复制 ; deepcopy(), 深复制
- get(), 访问一个不存在的键时不会报异常,返回None
-
>>> d={} >>> print d['name'] Traceback (most recent call last): File "<stdin>", line1, in ? KeyError: 'name'
>>> print d.get('name')
>>> None - items(), 返回键值对的列表形式; iteritems(), 返回键值对的迭代器对象, 使用更高效
- keys(), 返回键的列表形式; iterkeys(), 返回键的迭代器对象
10. 序列解包 (将多个值的序列解开,放到变量的序列中)
- 多个赋值同时进行以及交换
-
>>> x,y,z = 1,2,3 >>> print x,y,z 1,2,3
>>> x,y =y,x
>>> print x,y,z
2,1,3
>>> value = 1,2,3
>>> value
(1,2,3)
>>> x,y,z = value
>>> x
1
>>> a,b,*rest = [1,2,3,4]
>>> rest
[3,4]
11. x==y 相等性(值相等); x is y 同一性(同一个对象)
0<age<100 运算符可以连用
三元运算符 :a if b else c (不用引入临时变量)
12. 迭代工具
- zip 并行迭代
zip可以应付不等长的序列,当最短的序列用完后就会停止
-
>>> name = ['a','b','c'] >>> age = [2,3] >>> zip(name , age) [('a',2),('b',3)]
- enumerate(), 迭代序列中的对象同时获取当前对象的索引
-
for index,string in enumerate(strings): if 'xxx' in string: strings[index] = 'find'
- reversed() 非原地翻转 ; reverse() 原地翻转
13. 循环相关
- while True/break 习语
- 循环中的else子句
当循环内使用break时,通常是因为找到了某物或某事发生了,但有时候想要在没有跳出前做些事情。
故在循环中没有调用到break时会执行else子句。
-
for n in range(100): ... if xxx: ... break else: #与for循环对齐 ...
14. 列表推倒式
-
>>> [x*x for x in range(10) if x %3 ==0] [0,9,36,81] >>> [(x,y) for x in range(1) for y in range(2)] #最外层使用圆括号不会得到"元组推导式" [(0,0),(0,1)]
15. 使用del删除
-
>>> x=[2] >>> y = x >>> del x >>> y [2]
删除x后,y并不会被删除。del删除的只是名称,而不是列表本身。python中是没有办法删除值的,也不需要考虑。当某个值不再使用时,Python解释器会负责内存的回收。
16. exec(),动态执行一个字符串的语句
-
>>> exec "print 'hello,world' " hello,world
eval(),计算以字符串形式书写的python表达式
-
>>> eval("8+9") 17
17. 命令空间(todo)
18.