《Dive Into Python》笔记:关于字典和列表

字典: {key1: value1, key2: value2, ...}

1. Dictionary 没有元素顺序的概念。说元素“顺序乱了”是不正确的,它们只是序偶的简单排列。这是一个重要的我,它会在你想要以一种特定的,可重现的顺序(像以key的字母表顺序)存取dictionary元素的时候骚扰你。有一些实现这些要求的方法,它们只是没有加到dictionary中去。dictionary 的key 区分大小写。

2. 从dictionary 中删除元素:
   1)del 字典名[键名] :从字典中删除指定的key;
   2)字典名.clear () :删除字典中所有的元素;

列表: [element1, element2, ...]
3. list(列表)
   1) list 类似于C语言中的数组,元素从0开始;
   2) 负数索引从ist的尾数开始向前计数来存取元素。任何一个非空的list最后一个元素总是li[-1];
   3) 如果负数索引感到糊涂,可以这样理解:li[-n] == li[len[li] - n];

4. list 的切片
   1)如果左侧切片索引为0,可以将其省略,默认为0.所以,li[:3]和li[0:3]是一样的;
   2)如果右侧切片索引是list的长度,也可将其省略,所以,li[3:]和li[3:5]是一样的(当ls只有5个元素);
   3)li[:n] 返回前n个元素,li[n:]返回剩下的元素,不管li有多长;
   4)如果将两个切片索引全部省略,这将包括list的所有元素,但与原始的名为li的list不同,它是一个新的list,恰好拥有与li一样的全部元素。li[:]是生成一个list完全拷贝的一个简写;

5. 向list中添加元素
   1)使用append向list的末尾追加单个元素,如:li.append('new') ,在li列表末尾加添元素;
   2)使用insert将单个元素插入到list中,数据参数是插入点的索引。如:li.insert(2, 'new'),在li列表的第三个位置插入一个元素;
   3)使用extend来连接list, 注意不要使用多个非参数来调用extend,要使用一个list参数进行调用。如:li.extend(['two', 'elements']),在li列表后面连接列表['two', 'elements'];

6. extend(扩展) 与 append(追加) 的差别
   1)lists的两个方法extend和append看起来类似,但实际上完全不同。extend接受一个参数,这个参数总是一个list, 并且把这个list中的每个元素添加到原list中;
   2)append接受一个参数,这个参数可以是任何数据类型,并且简单地追加到list的尾部。插入的这个数据作为一个元素存在,即使是含有多个元素的list;所以,如果你在使用list作为一个元素追加在列表后面时,你的意图是extend的话,请不要使用append;

7. 在list中搜索
   1)index在list中查找一个值的首次出现并返回索引值,请注意只返回首次出现的元素索引值;
   2)如果在list中没有找到值,python会引发一个异常;
   3)要测试一个值是否在list内,使用in,如果值存在,返回True,否则返回False
  
8. python中的True
   1) 0为False,其它所有值皆为true;
   2) 空串("")为False,其它所有字符串皆为True;
   3) 空list[]为False,其他所有list皆为True;
   4) 空tuple()为False,其他所有tuple皆为True;
   5) 空dictionary{}为False,其它所有dictionary皆为 True;

9. 从list中删除元素
   1)使用remove 从list中删除首次的值,如果有两个值在列表中,只删除第一个;
   2)如果在list中没有找到值,python引发一个异常来响应index方法;
   3)pop会做两件事:删除list中的最后一个元素,再返回删除元素的值;

10. 使用list的运算符。
   1)使用 + 运算符连接两个list,list = list + otherlist 相当于list.extend(otherlist)。但 + 运算把一个新(连接后)的list作为值返回,而extend 只修改存在的list。也就是说,对于大型list来说,extend 的执行速度要快一些;
   2)+= 运算等同于li.extend(['two']),+= 运算符可用于list,字符串和整数,并且可以被重载用于用户自定义的类中;
   3)* 运算符作为一个重复器作用于list,li = [1, 2] * 3 等同于 li = [1, 2] + [1, 2] + [1, 2],即将三个list连接成一个;

posted @ 2011-09-01 17:34  jeff_nie  阅读(353)  评论(0编辑  收藏  举报