当前位置:文档之家› 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>", line 1, 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>", line 1, in ?TypeError: cannot concatenate 'str' and 'int' objects3.6. 映射listPython 的强大特性之一是其对 list 的解析, 它提供一种紧凑的方法, 可以通过对 list 中的每个元素应用一个函数, 从而将一个 list 映射为另一个list。

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

相关主题