注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Fly to the Sky!

很多人因为寂寞而错爱一个人,更多人因为错爱一个人而寂寞一生。

 
 
 

日志

 
 

Python 基本语法  

2010-03-03 13:53:22|  分类: python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1Dictionary语法

l         Dictionarykey/value对(称为项目)组成,keyvalue之间用“:”分割,项目用 “,”分割,所有项目用“{}”包括起来

>>> phonebook = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

l         Dictionarykey值必须唯一,否则后者会覆 盖前者:

>>> phonebook = {'Alice': '2341', 'Alice': '9102', 'Cecil': '3258'}

>>> phonebook

{'Alice': '9102', 'Cecil': '3258'}

l         使用dict()函数可以从Mapping(如其它的Dictionary)或key/value形式的Sequence创建Dictionary

>>> items = [('name', 'Gumby'), ('age', 42)]

>>> d = dict(items)

>>> d

{'age': 42, 'name': 'Gumby'}

l         也可以用keyword参数来创建Dictionary

>>> d = dict(name='Gumby', age=42)

>>> d

{'age': 42, 'name': 'Gumby'}

 

2、基本Dictionary操作

l         Dictionary支持Sequence的基本操作,但要注意下面 几点:

l         key值可以是任何类型,但必须是 不可变类型,如整数、浮点数、StringTuple

l         对项目赋值时,如果key值不存在,会新建项目:

>>> x = {}

>>> x[42] = 'Foobar'

>>> x

{42: 'Foobar'}

l         使用in操作符时,是查找key值,而不是value

 

3、使用Dictionary格式化String

l         转换形式:%(key)typetype是转换类型)

>>> template = '''<html>

<head><title>%(title)s</title></head>

<body>

<h1>%(title)s</h1>

<p>%(text)s</p>

</body>'''

>>> data = {'title': 'My Home Page', 'text': 'Welcome to my home page!'}

>>> print template % data

<html>

<head><title>My Home Page</title></head>

<body>

<h1>My Home Page</h1>

<p>Welcome to my home page!</p>

</body>

 

4Dictionary方法

1 clear:移去Dictionary中所有的元素

>>> d = {'age': 42, 'name': 'Gumby'}

>>> d

{'age': 42, 'name': 'Gumby'}

>>> d.clear()

>>> d

{}

l         注意,d.clear()d = {}结果相同,但含义不同:后者是指向了 一个新的空Dictionary

2 copy:返回具有相同key/value对的新Dictionary(注意value值是共用的)

>>> x = {'username': 'admin', 'machines': ['foo', 'bar', 'baz']}

>>> y = x.copy()

>>> y['username'] = 'mlh'

>>> y['machines'].remove('bar')

>>> y

{'username': 'mlh', 'machines': ['foo', 'baz']}

>>> x

{'username': 'admin', 'machines': ['foo', 'baz']}

l         避免上面问题的方法是对value值也进行拷贝,可以使用copy模块中的deepcopy()函数:

>>> from copy import deepcopy

>>> d = {}

>>> d['names'] = ['Alfred', 'Bertrand']

>>> c = d.copy()

>>> dc = deepcopy(d)

>>> d['names'].append('Clive')

>>> c

{'names': ['Alfred', 'Bertrand', 'Clive']}

>>> dc

{'names': ['Alfred', 'Bertrand']}

3 fromkeys:根据给定的key值创建新的Dictionary,缺省value值为None

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

{'age': None, 'name': None}

l         可以使用DictionaryType(后面讲述):dict

>>> dict.fromkeys(['name', 'age'])

{'age': None, 'name': None}

l         可以指定value的缺省值:

>>> dict.fromkeys(['name', 'age'], '(unknown)')

{'age': '(unknown)', 'name': '(unknown)'}

4 get:获取项目的value值(不常用)

l         注意下面的区别:

>>> d = {}

>>> print d['name']

Traceback (most recent call last):

  File "<interactive input>", line 1, in ?

KeyError: 'name'

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

None

l         可以指定缺省值(缺省是None):

>>> d.get('name', 'N/A')

'N/A'

5 has_key:检查Dictionary中是否有指定key

>>> d = {}

>>> d.has_key('name')

0

>>> d['name'] = 'Eric'

>>> d.has_key('name')

1

6 itemsiteritems

l         items()List返回Dictionary中所有项目,每个项目的形 式是(key, value):

>>> d = {'title': 'Python Web Site', 'url': 'http://www.python.org', 'spam': 0}

>>> d.items()

[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python Web Site')]

l         iteritems()返回Iterator对象:

>>> d.iteritems()

<dictionary-itemiterator object at 0x0101CA60>

>>> list(d.iteritems())

[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python Web Site')]

7 keysiterkeys

>>> d.keys()

['url', 'spam', 'title']

>>> d.iterkeys()

<dictionary-keyiterator object at 0x01073720>

>>> list(d.iterkeys())

['url', 'spam', 'title']

8 pop:根据指定key返回value,并从Dictionary中移去该项目:

>>> d = {'x': 1, 'y': 2}

>>> d.pop('x')

1

>>> d

{'y': 2}

9 popitem:从Dictionary中随机弹出一个项目返回(Dictionary中的项目是无序的)

>>> d = {'title': 'Python Web Site', 'url': 'http://www.python.org', 'spam': 0}

>>> d.popitem()

('url', 'http://www.python.org')

>>> d

{'spam': 0, 'title': 'Python Web Site'}

10 setdefault:根据指定的key值,对不在Dictionary的项目设置value

>>> d = {}

>>> d.setdefault('name', 'N/A')

'N/A'

>>> d

{'name': 'N/A'}

>>> d['name'] = 'Gumby'

>>> d.setdefault('name', 'N/A')

'Gumby'

>>> d

{'name': 'Gumby'}

l         如果不指定缺省值,则使用None

11update:使用另一个Dictionary的项目来更新指定Dictionary

>>> d = {'title': 'Python Web Site', 'url': 'http://www.python.org', 'changed': 'Mar 14 22:09:15 MET 2005'}

>>> x = {'title': 'Python Language Website'}

>>> d.update(x)

>>> d

{'url': 'http://www.python.org', 'changed': 'Mar 14 22:09:15 MET 2005', 'title': 'Python Language Website'}

12 valuesitervalues

>>> d.values()

['http://www.python.org', 'Mar 14 22:09:15 MET 2005', 'Python Language Website']

>>> d.itervalues()

<dictionary-valueiterator object at 0x01073900>

>>> list(d.itervalues())

['http://www.python.org', 'Mar 14 22:09:15 MET 2005', 'Python Language Website']

5String方法

1 find: 返回子串在Sting中第一次出现的index值,没有找到返回-1

>>> title = "Monty Python's Flying Circus"

>>> title.find('Monty')

0

>>> title.find('Python')

6

>>> title.find('Zirquss')

-1

l         可以指定开始查找的位置(包括)和可选的结束位置(不包括)

>>> subject = '$$$ Get rich now!!! $$$'

>>> subject.find('$$$')

0

>>> subject.find('$$$', 1) # Only supplying the start

20

>>> subject.find('!!!')

16

>>> subject.find('!!!', 0, 16) # Supplying start and end

-1

2 join: 连接Sequence中的所有元素为一个String,元素必须是String

>>> seq = [1, 2, 3, 4, 5]

>>> '+'.join(seq)

Traceback (most recent call last):

  File "<interactive input>", line 1, in ?

TypeError: sequence item 0: expected string, int found

>>> seq = ['1', '2', '3', '4', '5']

>>> '+'.join(seq)

'1+2+3+4+5'

>>> dirs = '', 'usr', 'bin', 'env'

>>> '/'.join(dirs)

'/usr/bin/env'

>>> print 'C:' + '\\'.join(dirs)

C:\usr\bin\env

3 lower: 将String转换成小写

>>> 'Trondheim Hammer Dance'.lower()

'trondheim hammer dance'

4 replace: 将String中所有出现的某个子串替换成另外一个子串

>>> 'This is a test'.replace('is', 'eez')

'Theez eez a test'

5 split: 将String分割成Seqence,不使用分隔符,缺省为空白字符

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

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

>>> '/usr/bin/env'.split('/')

['', 'usr', 'bin', 'env']

>>> 'Using the default'.split()

['Using', 'the', 'default']

6 strip: 移去String左右的空白字符(缺省)

>>> ' internal whitespace is kept '.strip()

'internal whitespace is kept'

l         可以指定要移去的字符集合

>>> '*** SPAM * for * everyone!!! ***'.strip(' *!')

'SPAM * for * everyone'

7 translate

l         Translate()的功能类似replace(),但translate()只 对字符进行处理,效率要比replace()

l         在使用Translate()之 前,需要调用string模块中的maketrans()函数创建转换表

l         maketrans()函数有两个参数:长度相同的String,表示用第二个String中的每个字符替换第一个String中 相同位置的字符

l         最后将maketrans()函 数创建的转换表作为参数,传给translate()方法

>>> from string import maketrans

>>> table = maketrans('cs', 'kz')

>>> 'this is an incredible test'.translate(table)

'thiz iz an inkredible tezt'

l         可以使用可选的参数来指定要删除的字符集合

>>> 'this is an incredible test'.translate(table, ' ')

'thizizaninkredibletezt'
  评论这张
 
阅读(1575)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017