python 原貌_Python 初学笔记

>>> print "isn't that grand"

isn't that grand #不需要转义的

#为了让文字符扩展到多行,可以在一行的末尾使用反斜线符号,意味着下面一行是上面字符串的延续。

#换行符 /n

#用一对连续的三引用符号将字符串圈起来可以,文本将按照原貌存储。“”“大三大四的”“”

#在字符前面加R或者r,表示该字符串是一个“原”字符串,即使其中包含转义字符,也将被忽略。

#在前面加U或者u,使之成为Unicode字符串

#通过索引访问单个字符 mystr[i]

#字符串的切片操作 mystr[i:j:k],第三个参数可以没有,表示步长。当步长为负数时,必须让开始索引大于结束索引

#字符串遍历操作 for c in mystr:

#拼接:mystr+'odl'

#多次重复:‘xo’*3

#用mystr.isdigit() 测试字符串的内容,如果mystr不是空的而且所有字符都是数字,将返回true。

#改成大写操作 mystr.upper()

#计算字符串出现的次数 mystr.count('needle') 计算‘needle’在mystr中出现的次数

#可以用mystr.splitlines()将字符串分隔成多个单行字符串并植入一个列表中

#用join重新生成一个庞大的字符串

--将一个字符转换为相应的ASCII或者Unicode码

ASCII;直接使用内置的函数 ord(i)

Unicode:同上 chr(97),返回对应的ASCII

把数字的Unicode码转化为长度为1的Unicode字符串,使用 unichr()

return isinstance(anobj,basestring)  #判断anobj是不是 字符串

--字符串的对齐

str.ljust(20)

str.rjust(20)

str.center(20)  也可以用str.center(20,'+')

--去除字符串两端的空格

str.lstrip()  #去除左边的空格

str.rstrip() #去除右边的空格

str.strip()   #去除两边的空格

例:x='xyxxyy hejyx yyx'

print '|'+x.strip('xy')+'|'

| hejyx |  #只有开头的x y 被真正移除,开头和结尾 的空格被保留下来了

--合并字符串

str.join(pieces)

str='%s%s something %s yet'%(piece,piece2,piece3)

str=piece1+piece2+piece3;  #尽量不使用这种方法,(性能问题)

pow(2,3)  #2^3运算

abs(-10)=10  #求绝对值

round(1.0/2.0)=1.0  #把浮点数四舍五入为最接近的整数值

import math

math.floor (32.9)=32.0 #取整操作

>>> from math import sqrt  #这种形式可以直接使用函数,不需要模块名

>>> sqrt(9)

3.0   #开方

nan  #not a number

temp=42

>>> print 'asdas'+'temp'

asdastemp   #字符串的拼接 temp用的是单引号

temp=42

>>>print 'as'+`temp`  #这里temp用的是反引号(反引号在tab键上面)

as42

str,repr和反引号是把python值变为字符串的三种方法

raw_input与input的区别:input会假设用户输入的是合法的python表达式,输入字符串的时候要加引号的

而raw_input会把所有的输入当做原始数据(尽可能用这个)

>>> print r"adas\"

SyntaxError: EOL while scanning string literal

>>> print r"sads"

sads    #原始字符串的结尾不能有\,如果需要的话需要对其进行转义

>>> print r"dsa\\"

dsa\\    #虽然进行了转义但是居然出现了两个\\

>>> print r'asd' '\\'  #这样就可以出新一个\

asd\

#两种相同类型的序列才能进行操作,列表与字符串不能操作的

>>> 'world'+[1,2,3]

Traceback (most recent call last):

File "", line 1, in

'world'+[1,2,3]

TypeError: cannot concatenate 'str' and 'list' objects

#None表示什么都没有,N大写。以下表示初始化一个长度为10的列表

>>> s=[None]*10

>>> s

[None, None, None, None, None, None, None, None, None, None]

#判断某个值是否在序列中

>>> users=['foo','shan','lan']

>>> raw_input('Enter your name')in users

Enter your nameshan

True

#检查用户名和PIN码

datebase=[['shan','1111'],['lan','2222'],['jie','3333']]

username=raw_input('username:')

pin=raw_input('Pin code:')

if[username,pin] in datebase:print 'Access granted'

输出:username:shan

Pin code:1111

Access granted

>>>

#根据字符串创建列表

>>> list('hello')

['h', 'e', 'l', 'l', 'o']

#列表的删除操作

>>> name=['shan','lan','jie']

>>> del name[1]

>>> name

['shan', 'jie']

#切片赋值,插入新元素

>>> numbers=[1,5]

>>> numbers[1:1]=[2,3,4]

>>> numbers

[1, 2, 3, 4, 5]

#在列表末尾追加新元素

>>> lis=[1,2]

>>> lis.append(4)

>>> lis

[1, 2, 4]

#统计某个元素在列表中出现的次数

>>> ['q','q','q','w','w'].count('q')

3

#拓展列表

>>> a=[1,2,3]

>>> b=[4,5,6]

>>> a.extend(b)

>>> a

[1, 2, 3, 4, 5, 6]

或者

>>> a=[1,2]

>>> b=[3,4]

>>> a[len(a):]=b

>>> a

[1, 2, 3, 4]

#寻找某个值的索引

>>> name=['shan','lan','jie']

>>> name.index('shan')

0

#将对象插入列表

>>> name=['shan','lan','jie']

>>> name.insert(1,"ssss")

>>> name

['shan', 'ssss', 'lan', 'jie']

#列表的移除操作之pop  (pop是有返回值的)

>>> name=['shan','lan','jie']

>>> name.pop()  #默认是移除最后一个

'jie'

>>> name

['shan', 'lan']

>>> name.pop(0)

'shan'

>>> name

['lan']

PS;pop和append正好相对

>>> x=[1,2,3]

>>> x.append(x.pop())

>>> x

[1, 2, 3]

#列表元素的移除操作之remove (remove是没有返回值的)

>>> name=['shan','lan','jie']

>>> name.remove('shan')

>>> name

['lan', 'jie']

#列表元素的反向操作

>>> x=[1,2,3]

>>> x.reverse()

>>> x

[3, 2, 1]

#列表元素的排序

>>> y=['1','2','8','4','3','9']

>>> y.sort()

>>> y

['1', '2', '3', '4', '8', '9']

PS :当用户需要一个排序好的列表副本,同时有保留原列表不变的时候

>>> x=['1','2','8','4','3','9']

>>> y=x.sort()

>>> print y

None  #是错的!说明sort()返回的是空值

#正确做法,先做一个副本给y,在让y排序

>>> x=['1','2','8','4','3','9']

>>> y=x[:]

>>> y.sort()

>>> x

['1', '2', '8', '4', '3', '9']

>>> y

['1', '2', '3', '4', '8', '9']

#简单的赋值是没有用的

>>> x=['1','2','8','4','3','9']

>>> y=x

>>> y.sort()

>>> y

['1', '2', '3', '4', '8', '9']

>>> x

['1', '2', '3', '4', '8', '9']

#另一种获取已排序的列表副本的方法是使用sorted(),它可以返回列表

>>> x=['1','2','8','4','3','9']

>>> y=sorted(x)

>>> x

['1', '2', '8', '4', '3', '9']

>>> y

['1', '2', '3', '4', '8', '9']

#按照关键字排序

>>> name=['shan','lan','ji','aaaaa']

>>> name.sort(key=len)

>>> name

['ji', 'lan', 'shan', 'aaaaa']

>>> x=['1','2','8','4','3','9']

>>> x.sort(reverse=True)

>>> x

['9', '8', '4', '3', '2', '1']

#把序列转化为元组

>>> tuple([1,2,3])

(1, 2, 3)

>>> tuple('abc')

('a', 'b', 'c')

>>> tuple((1,2,3))

(1, 2, 3)

#字符串是不能改变的

>>> name='shanlanjie'

>>> name[-3:]='sss'

Traceback (most recent call last):

File "", line 1, in

name[-3:]='sss'

TypeError: 'str' object does not support item assignment

#字符串的查找

>>> name='i am shanlanjie'

>>> name.find('shanlanjie')

5

>>> name='i am shanlanjie am i'

>>> name.find('am',2)  #提供起始点

2

>>> name.find('shanlanjie',0,5)

-1  #提供起始点和终止点

#字符串的join方法

>>> add='+'

>>> name=['shan','lan','jie']  #这个地方必须是字符串

>>> add.join (name)

'shan+lan+jie'

#把字符串变成小写

>>> 'DSADSADSAD'.lower()

'dsadsadsad'

#标题转换

>>> 'i am shanlanjie'.title()

'I Am Shanlanjie'

#子字符串的替换

>>>'i am shanlanjie'.replace('am','am not')

'i am not shanlanjie'

#将字符串分割成序列

>>> '1+2+3+4+5'.split('+')

['1', '2', '3', '4', '5']

#dict函数创建字典

>>> items=[('name','shanlanjie'),('age',21)]

>>> d=dict(items)

>>> d

{'age': 21, 'name': 'shanlanjie'}

>>> d['name']

'shanlanjie'

>>> d=dict(name='shanlanjie',age=21) #这是通过关键字参数创建字典

>>> d

{'age': 21, 'name': 'shanlanjie'}

#字典的格式化字符串

>>> name={'shan':'1111','lan':'2222','jie':'3333'}

>>> "big shan's phone number is %(lan)s."% name

"big shan's phone number is 2222."

#(字典)clear清除所有项

>>> name={'shan':'1111','lan':'2222','jie':'3333'}

>>> f=name.clear()

>>> name

{}

>>> f

>>> print f

None

#(字典)的copy方法。(浅复制)

>>> x={'name':'admin','numbers':['1111','2222','3333']}

>>> y=x.copy()

>>> y['name']='shanlanjie'   #当在副本替换值的时候,原始字典不变

>>> y['numbers'].remove('1111')  #当在副本改变值的时候,原始字典将会改变

>>> y

{'name': 'shanlanjie', 'numbers': ['2222', '3333']}

>>> x

{'name': 'admin', 'numbers': ['2222', '3333']}

#建立空字典

>>> {}.fromkeys(['name','age'])

{'age': None, 'name': None}   #默认是None

>>> {}.fromkeys(['name','age'],'sadsd')

{'age': 'sadsd', 'name': 'sadsd'}

>>>

#用get做字典的查询

>>> d={}

>>>

>>> print d.get('name')

None  #默认是None

>>> d['name']='shan'

>>> d.get('name')

'shan'

>>> d.get('age','21')

'21'   #改变默认值

>>>

#用has_key查询字典中是否含有某个值

>>> name={'shan':'1111','lan':'2222','jie':'3333'}

>>> name.has_key('shan')

True

#items方法将所有子典项以列表方式返回,返回时没有特殊顺序

>>> name={'shan':'1111','lan':'2222','jie':'3333'}

>>> name.items()

[('lan', '2222'), ('jie', '3333'), ('shan', '1111')]

#iteritems返回的是迭代器

>>> name={'shan':'1111','lan':'2222','jie':'3333'}

>>> it=name.iteritems()

>>> it

>>> list(it)

[('lan', '2222'), ('jie', '3333'), ('shan', '1111')]

#字典的pop,删除某一个对象

>>> name={'shan':'1111','lan':'2222','jie':'3333'}

>>> name.pop('shan')

'1111'

>>> name

{'lan': '2222', 'jie': '3333'}

#字典的popitem  (随机弹出一个删除,字典是没有顺序的)

>>> name={'shan':'1111','lan':'2222','jie':'3333'}

>>> name.popitem()

('lan', '2222')

>>> name

{'jie': '3333', 'shan': '1111'}

#字典的setdefault用法

>>> d={}

>>> d.setdefault('name','shanlanjie')

'shanlanjie'   #当键不存在时,返回默认值

>>> d

{'name': 'shanlanjie'}

>>> d.setdefault('name','NN')

'shanlanjie'  #当键存在时,返回键值

>>> d

{'name': 'shanlanjie'}

>>> d={}

>>> print d.setdefault('name')

None  #默认值是None

#字典的update

>>> name={'shan':'1111','lan':'2222','jie':'3333'}

>>> x={'shan':'4444'}

>>> name.update(x)  #用x更新name

>>> name

{'lan': '2222', 'jie': '3333', 'shan': '4444'}

#用values以列表的形式返回字典中的值(可重复)

>>> name={'shan':'1111','lan':'2222','jie':'3333','big':'1111'}

>>> name.values()

['1111', '2222', '3333', '1111']

#is运算符 判定的是同一性而不是相等性 x,y,z虽然值相等,但是不是同一个对象

>>> x=y=[1,2,3]

>>> z=[1,2,3]

>>> x==y

True

>>> x is y

True

>>> x is z  #用==判断是否相等,用is判断是不是同一个对象

False

#range()

>>> range(0,10)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  #包含上线,不包含下线

#循环遍历字典元素

>>> name={'shan':'1111','lan':'2222','jie':'3333'}

>>> for key in name:

print key,'sdsad',name[key]

lan sdsad 2222

jie sdsad 3333

shan sdsad 1111

或者

>>> name={'shan':'1111','lan':'2222','jie':'3333'}

>>> for key,value in name.items():

print key,'dassad',value

lan adssa value

jie adssa value

shan adssa value

#并行迭代

>>> name=['shan','lan','jie']

>>> ages=[12,15,34]

>>> for i in range(len(name)):

print name[i],'is',ages[i],'years old'

shan is 12 years old

lan is 15 years old

jie is 34 years old

或者

>>> name=['shan','lan','jie']

>>> ages=[12,15,34]

>>> zip(name,ages)   #用zip函数把两个序列压缩到一起

[('shan', 12), ('lan', 15), ('jie', 34)]

>>> for nam,age in zip(name,ages):

print nam,'is',age,'years old'

shan is 12 years old

lan is 15 years old

jie is 34 years old

#翻转和排序迭代

>>> sorted([4,3,5,2])

[2, 3, 4, 5]

>>> sorted('hello world')

[' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']

>>> list(reversed('hello world'))

['d', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e', 'h']

>>> ''.join(reversed('hello world'))

'dlrow olleh'

#列表推倒式

>>> [x*x for x in range(10)]

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> [x*x for x in range(10) if x%3==0]

[0, 9, 36, 81]

>>> [(x,y)for x in range(3)for y in range(3)]

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

#pass 什么都不发生

#关于del

>>> name=['shan','lan','jie']

>>> name2=name

>>> name2

['shan', 'lan', 'jie']

>>> name=None   #把name赋空值,但是并不是删除

>>> name

>>> name2  #name2与name指向同一个字典

['shan', 'lan', 'jie']

>>> name=['shan','lan','jie']

>>> name2=name

>>> del name  #删除了,只是删除了名字,不会删除值的。

>>> name

Traceback (most recent call last):

File "", line 1, in

name

NameError: name 'name' is not defined

>>> name2   #python是没有办法删除值的

['shan', 'lan', 'jie']

#exec执行一个字符串的语句,不返回任何对象

>>> exec "print 'hello world'"

hello world

>>> from math import sqrt

>>> exec "sqrt=1"  #干扰了命名空间

>>> sqrt(4)

Traceback (most recent call last):

File "", line 1, in

sqrt(4)

TypeError: 'int' object is not callable

>>> from math import sqrt

>>> scope={}  #scope是作用域的意思

>>> exec 'sqrt=1' in scope  #把要执行的东西放到作用域,就不怕收到其他干扰了

>>> sqrt(4)

2.0

>>> scope['sqrt']

1

#eval('用于求值')

>>> eval(raw_input("计算:"))

计算:12+12+10*12

144

-----抽象

#内建函数callable判读函数是否可用

>>> import math

>>> x=1

>>> callable(x)

False

>>> y=math.sqrt

>>> callable(y)

True

#给函数写文档

def hello(name):

'''shanlanjie'''

return 'hello'+name

#给函数提供任意多的参数

def print_params(*params):

print params

>>> print_params(1,2,3)

(1, 2, 3)   #返回的是元组

def print_params(**params):

print params

>>> print_params(x=1,y=2,z=3)

{'y': 2, 'x': 1, 'z': 3}  #返回的是字典

#继承

class Filter:

def init(self):

self.blocked=[]

class Spamfiter(Filter):  #Spamfilter继承了Filter

def init(self):  #重写了超类中的init()

self.blocked=['spam']

>>> issubclass(Spamfiter,Filter)  #判断Spamfiter是不是Filter的子类

True

---正则表达式

.(点号)  --通配符

\  --转义字符

[a-z] --匹配a-z之间的字母

[^abc]  --匹配除了abc之间的字符

| --选择符

(www\.)?    --在后面加问号就变成了可选项,可以出现在匹配字符串中,但是不是必须的

w* --允许重复匹配0次或者多次

w+ --允许重复一次或者多次

w{m,n}  --允许匹配m-n次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值