Python学习笔记
没怎么整理,乱七八糟的Python笔记。。。。主要供自己查看用。。。为什么有些东西就是记不住(╯‵□′)╯︵┻━┻摔!!
好吧。。。乖乖做笔记吧。。(有些笔记是初学的时候留下的,也给一些初学者看看。。。)
有空再整理一篇pythonxy的笔记吧。。。
整除:
//
数字转字符串:str()
表达式转字符串:
repr()
或者 `表达式`
其中`为波浪号下面那个
字符串:保持输出和书写一致:
r’…..’
字符串变序列:
list
反操作:
”.join()
列表插值方法:
a[1:1] = [1,2,3]
删除:a[1:3] = []
列表加入一个值:append 注意:返回值为None
加入多个值:extend
列表返回索引位置:
index
字符串查找定位:
find 接受起始和终止的位置
列表退栈,并返回被删除的数的值
pop()返回最后一个值
pop(0)返回第一个值
pop(pos)删除其他值
列表remove:
删除第一个匹配项
reversed:
序列倒转
序列成员函数sort返回值为None
函数sorted(列表)返回值
对于sort,关键词key指定比较用的键值
a.sort(key=len)
reverse=TRUE可以反向排序
cmp(a,b)比较大小
可给序列成员函数sort做参数:a.sort(cmp)
tuple:序列转元组
字符串格式化:“format” % 参数元组或字典
使用序列的话会被认为是一个值
字典用法:
>>> a = {‘f1′:1,’f2’:2}
>>> “%(f1)d + %(f2)d” % a
‘1 + 2’
使用模板:
from string import Template
s = Template(‘$x,$x’)
s.substitute(x=’cc’)
>>>’cc,cc’
s = Template(‘$f1,$f2’)
a = {‘f1′:1,’f2’:2}
s.substitute(a)
>>>’1,2′
字符串lower转小写
title只有第一个字母大写
字符串匹配取代:
‘i am a boy’.replace(‘boy’,’girl’)
translate:替换单个字符,但是可以多个同时替换
from string import maketrans table = maketrans('ab','cd');#a->c b->d 'aaabbbc'.translate(table)
>>>’cccdddc’
字符串连接分割:
‘+’.join([1,2,3,4])
‘1+2+3+4’.split(‘+’)
strip:去除字符串两侧的空格(默认)或者指定字符
只有两侧,没有中间;
而且参数为字符串时,去除的是每个字符串里面包含的字符
dict:映射元组->字典
>>> a = (‘f1’,1)
>>> b = (‘f2’,2)
>>> dict([a,b])
{‘f1’: 1, ‘f2’: 2}
清除字典所有项:a.clear()
如果多个变量关联到同一个字典,想要全部清空,那么就要用clear
a={}是赋值操作,只会清空一个变量
字典赋值a=b,两个变量关联同一份字典
如果使用a = b.copy(),一个字典中替换某个值,那么另一个字典不受影响
但是如果一个字典中修改某个值,另一字典会被影响,
为了彻底无关,应该用深赋值
from copy import deepcopy
字典fromkeys建立新的键,默认对应值为None
>>> {}.fromkeys(['name','id']) {'name': None, 'id': None} >>> {}.fromkeys(['name','id'],['aa']) {'name': ['aa'], 'id': ['aa']}
字典的get:访问字典项
一般的a[‘name’]如果不存在会出错
但是get的话会返回None
而setdefault如果在存在项的情况下,则和get一样
不存在的话,就建立该项,参数可以设定默认值
字典has_key判断是否包含某个键
字典d.items()将字典以列表返回
a={'f1': 1, 'f2': 2} a.items() >>> [('f1', 1), ('f2', 2)]
iteritems的话可以返回一个迭代器
字典d.keys()可以将键值以列表形式返回
iterkeys返回迭代器
字典pop,删除指定键-值,并返回‘值’
字典popitem:类似pop,但是是随机弹出一项
用于一个一个弹出删除并处理的场合
字典update:可用一个字典更新另一个字典
历遍字典:
for key in dic:
…
zip打包可以处理不等长的参数
对于其中一个较长的参数用range的时候,可以改用xrange
for语句中用enumerate:
s = ['string1','string3','string3']; for idx,string in enumerate(s): print idx,string
返回:
0 string1
1 string3
2 string3
列表推导式:
>>> [(x,y) for x in range(3) for y in range(4)]
[(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)]
>>> [(x,y) for x in range(3) for y in range(4) if x != y]
[(0, 1), (0, 2), (0, 3), (1, 0), (1, 2), (1, 3), (2, 0), (2, 1), (2, 3)]
pass:
什么也不做,一般用于if中什么也不做的场合
exec:执行字符串对应的python代码
eval:计算字符串对应的表达式
为了保证安全,最好加上空间名:
>>> scope = {} >>> scope['x']=1 >>> scope['y']=2 >>> eval('x+y',scope) 3 >>> exec 'print x+y' in scope 3
chr(n):数字->字符
ord(c):字符->数字
函数参数不定长:参数前面加*
函数内部理解为元组
前面加**
函数内部理解成字典
这两个过程都可以反转,如def add(x,y)可以调用add(*(1,2))
vars()返回全部变量:
>>> x = 3 >>> scope = vars() >>> scope['x'] 3
函数内调用外部变量:
global()[‘变量名’]
申明为全局变量:
global x
筛选:filter
def cpmfunc(n): return n>6 a = range(12) print filter(cpmfunc,a)
或者:
filter(lambda x:x>6,a)
reduce:将序列中的前两个数处理,然后作为第三个数,继续不断操作下去,类似Mathematica的FolderList
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) >>>15
判断数据类型:
isinstance(a,tuple)
判断是否子类:
issubclass(sub,father)
查看父类:sub.__bases__
查看自身类型:class.__class__
判断是否有属性:hasattr([1,2,3],’count’)
随机挑选一个元素
from random import choice choice([....])
迭代器:
class fibs: def __init__(self): self.a=0; self.b=1; def next(self): self.a,self.b=self.b,self.a+self.b if self.a>100: raise StopIteration else: return self.a def __iter__(self): return self fi = fibs() for f in fi: if f < 100: print f
集合:
a=set(range(10))
并集:
a.union(b) == a | b
交集
a & b == a.intersection(b)
子集
(a&b).issubset(a) == True
c<=a == True
a.issuperset(c) == True
差集
a.difference(b) == a-b
a.symmetric_difference(b) == a^b
a.copy() != a
a=set()
b=set()
a.add(frozenset(b))
from random import shuffle
随机打乱:
shuffle(a)
制定随机范围随机数:
randrange(begin,end)
随机选择元素:
choice(seq)
随机选取n个:
sample(seq,n)
堆操作:
from heapq import * a = range(10) shuffle(a) heap = []; for n in a: heappush(heap,n)
弹出最小元素:
heappop(heap)
建立堆:
a = range(10)
shuffle(a)
heapify(a)
弹出最小元素并插入新元素:
heapreplace(hrap,n)
寻找第n大或者第n小的元素:
nlargest(n,iter)
nsamllest(n,iter)
双端队列:
from collection import deque q = deque(range(5)) q.append(5) q.appendleft(6) q.pop() q.popleft() q.rotate(3) q.rotate(-1)
获取时间
import time
获取当前时间:
time.asctime()
休眠:
sleep(secs)
字符串转数组:
time.strptime()
创建时间:
date1 = (2013,1,1,0,0,0,-1,-1,-1)
time.asctime(date1)
open文件模式:
a:追加模式
+:读写模式
f.write(str) f.read(n) f.read() # ALL f.tell() f.seek(n) file.readline() for line in open(filename): process(line) lines = list(open(filename))
map(function, sequence) : 对sequence中的item依次执行function(item),见执行结果组成一个List返回类似Mathematica中的@@:
>>> def cube(x): return x*x*x >>> map(cube, range(1, 11)) [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000] >>> def cube(x) : return x + x ... >>> map(cube , "abcde") ['aa', 'bb', 'cc', 'dd', 'ee']
另外map也支持多个sequence,这就要求function也支持相应数量的参数输入:
>>> def add(x, y): return x+y >>> map(add, range(8), range(8)) [0, 2, 4, 6, 8, 10, 12, 14]
字符串转整数
int()
a if b else c:
#用于lambda: lambda x:x if x > 0 else -x #用于数组生成: [x if x>0 else -x for x in range(-4,4)]
读取网页源文件:
import urllib2 content = urllib2.urlopen('http://www.XXXX').read() print(content)
【完】
本文内容遵从CC版权协议,转载请注明出自http://www.kylen314.com
强力马克#3