首页 > Python > Python学习笔记

Python学习笔记

2013年12月17日 发表评论 阅读评论

Python_logo唉,又是新的一篇笔记。。

没怎么整理,乱七八糟的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

分类: Python 标签:
  • unnamed5719

    强力马克#3