Python基础教程 学习总结
1. 导入模块
“模块.函数”(优先使用)
importmath
math.sqrt(9)
在确定不会导入多个同名函数时,可以使用 “from 模块 import 函数” 方式
from math importsqrt
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 importmaketrans>>> 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"", line1, in?
KeyError:'name'
>>> print d.get('name')
>>> None
items(), 返回键值对的列表形式; iteritems(), 返回键值对的迭代器对象, 使用更高效
keys(), 返回键的列表形式; iterkeys(), 返回键的迭代器对象
10. 序列解包 (将多个值的序列解开,放到变量的序列中)
多个赋值同时进行以及交换
>>> x,y,z = 1,2,3
>>> printx,y,z1,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
三元运算符 :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 inenumerate(strings):if 'xxx' instring:
strings[index]= 'find'
reversed() 非原地翻转 ; reverse() 原地翻转
13. 循环相关
while True/break 习语
循环中的else子句
当循环内使用break时,通常是因为找到了某物或某事发生了,但有时候想要在没有跳出前做些事情。
故在循环中没有调用到break时会执行else子句。
for n in range(100):
...ifxxx:
...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>>> delx>>>y
[2]
删除x后,y并不会被删除。del删除的只是名称,而不是列表本身。python中是没有办法删除值的,也不需要考虑。当某个值不再使用时,Python解释器会负责内存的回收。
16. exec(),动态执行一个字符串的语句
>>> exec "print 'hello,world'"
hello,world
eval(),计算以字符串形式书写的python表达式
>>> eval("8+9")17
17. 命令空间(todo)
18.