当前位置:文档之家› python学习笔记

python学习笔记

1、python中的函数以def来定义,利用缩进来表示函数的完整性,Python函数没有明显的begin和end,没有花括号,用于标函数的开始和结束。

唯一的分隔符是一个冒号(:),接着代码本身是缩进的。

如:def hello():print“Hello,world\n”hello()#调用hello函数2、所有的Python模块都是对象并且有几个有用的属性。

您可以使用这些属性方便地测试您所书写的模块。

下面是一个使用if__name__的技巧。

if__name__=="__main__":3、d={"server":"mpilgrim","database":"master"}Python中的hash表,利用key来进行查询值当使用dictionary时,您需要知道:dictionary的key是大小写敏感的。

Del d[key]:删除某个值d.clear:清空整个hash队列4、li=["a","b","mpilgrim","z","example"]Python中的数组li[0:3]:表示从0-2,结果为:['a','b','mpilgrim']append向list的末尾追加单个元素。

insert将单个元素插入到list中。

数值参数是插入点的索引。

请注意,list 中的元素不必唯一,现在有两个独立的元素具有'new'这个值,li[2]和li[6]。

extend用来连接list。

请注意不要使用多个参数来调用extend,要使用一个list参数进行调用。

在本例中,这个list有两个元素。

extend(扩展)与append(追加)的差别>>>li=['a','b','c']>>>li.extend(['d','e','f'])>>>li['a','b','c','d','e','f']>>>len(li)6>>>li[-1]'f'>>>li=['a','b','c']>>>li.append(['d','e','f'])>>>li['a','b','c',['d','e','f']]>>>len(li)4>>>li[-1]['d','e','f']Lists的两个方法extend和append看起来类似,但实际上完全不同。

extend接受一个参数,这个参数总是一个list,并且添加这个list中的每个元素到原list中。

在这里list中有3个元素('a','b'和'c'),并且使用另一个有3个元素('d','e'和'f')的list扩展之,因此新的list中有6个元素。

另一方面,append接受一个参数,这个参数可以是任何数据类型,并且简单地追加到list的尾部。

在这里使用一个含有3个元素的list参数调用append方法。

原来包含3个元素的list现在包含4个元素。

为什么是4个元素呢?因为刚刚追加的最后一个元素本身是个list。

List可以包含任何类型的数据,也包括其他的list。

这或许是您所要的结果,或许不是。

如果您的意图是extend,请不要使用append。

从list中删除元素>>>li['a','b','new','mpilgrim','z','example','new','two','elements'] >>>li.remove("z")>>>li['a','b','new','mpilgrim','example','new','two','elements'] >>>li.remove("new")>>>li['a','b','mpilgrim','example','new','two','elements']>>>li.remove("c")Traceback(innermost last):File"<interactive input>",line1,in?ValueError:list.remove(x):x not in list>>>li.pop()'elements'>>>li['a','b','mpilgrim','example','new','two']remove从list中删除一个值的首次出现。

remove仅仅删除一个值的首次出现。

在这里,'new'在list中出现了两次,但li.remove("new")只删除了'new'的首次出现。

如果在list中没有找到值,Python会引发一个异常来响应index方法。

pop是一个有趣的东西。

它会做两件事:删除list的最后一个元素,然后返回删除元素的值。

请注意,这与li[-1]不同,后者返回一个值但不改变list本身。

也不同于li.remove(value),后者改变list但并不返回值。

5、Tuple是不可变list。

一旦创建了一个tuple就不能以任何方式改变它t=("a","b","mpilgrim","z","example")使用tuple有什么好处呢?Tuple比list操作速度快。

如果您定义了一个值的常量集,并且唯一要用它做的是不断地遍历它,请使用tuple代替list。

如果对不需要修改的数据进行“写保护”,可以使代码更安全。

使用tuple而不是list如同拥有一个隐含的assert语句,说明这一数据是常量。

如果必须要改变这些值,则需要执行tuple到list的转换(需要使用一个特殊的函数)。

还记得我说过dictionary keys可以是字符串,整数和“其它几种类型”吗? Tuples就是这些类型之一。

Tuples可以在dictionary中被用做key,但是list不行。

实际上,事情要比这更复杂。

Dictionary key必须是不可变的。

Tuple本身是不可改变的,但是如果您有一个list的tuple,那就认为是可变的了,用做dictionary key就是不安全的。

只有字符串,整数或其它对dictionary安全的tuple才可以用作dictionary key。

Tuples可以用在字符串格式化中,我们会很快看到。

6、range[num]=[0,1,2,…(num-1)]字符串的格式化>>>k="uid">>>v="sa">>>"%s=%s"%(k,v)'uid=sa'7、+是字符串连接操作符。

不能将其用在字符串和非字符串间的连接上如:>>>userCount=6>>>print"Users connected:%d"%(userCount,)Users connected:6>>>print"Users connected:"+userCountTraceback(innermost last):File"<interactive input>",line1,in?TypeError:cannot concatenate'str'and'int'objects3.6.映射listPython的强大特性之一是其对list的解析,它提供一种紧凑的方法,可以通过对list中的每个元素应用一个函数,从而将一个list映射为另一个list。

例 3.24.List解析介绍>>>li=[1,9,8,4]>>>[elem*2for elem in li][2,18,16,8]>>>li[1,9,8,4]>>>li=[elem*2for elem in li]>>>li[2,18,16,8]为了便于理解它,让我们从右向左看。

li是一个将要映射的list。

Python循环遍历li 中的每个元素。

对于每个元素均执行如下操作,首先临时将其值赋给变量elem,然后Python应用函数elem*2进行计算,最后将计算结果追加到要返回的list中。

需要注意是,对list的解析并不改变原始的list。

将一个list的解析结果赋值给对其映射的变量是安全的。

不用担心存在竞争情况或任何古怪事情的发生。

Python会在内存中创建新的list,当对list的解析完成时,Python将结果赋给变量。

声明位于第2章的函数buildConnectionString对list的解析:["%s=%s"%(k,v)for k,v in params.items()]首先,注意到您调用了dictionary params的items函数。

相关主题