1. Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中

的元素。


>>>classmates = ['Michael','Bob','Tracy']

>>>classmates


用 len() 函数可以获得 list 元素的个数:

>>>len(classmates)

用索引来访问list 中每一个位置的元素,记得索引是从 0 开始的:

list 是一个可变的有序表,所以,可以往 list中追加元素到末尾,使用append函数

>>>classmates.append('Adam')

>>>classmates

也可以把元素插入到指定的位置,比如索引号为 1 的位置,使用insert函数:

>>>classmates.insert(1,'Jack')

>>>classmates

要删除list 末尾的元素,用 pop() 方法:

>>>classmates.pop()

>>>classmates

要删除指定位置的元素,用 pop(i) 方法,其中 i 是索引位置,也可以使用remove()方法删除:

>>>classmates.pop(1)

>>>classmates

>>>classmates.remove('Bob')

>>>classmates

要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:

>>>classmates[1]='Sarah'

>>>classmates

要给列表的元素进行排序可以使用sort()方法,倒序可以使用reverse()方法:

>>>classmates.sort()

>>>classmates

>>>classmates.reverse()

>>>classmates

list 里面的元素的数据类型也可以不同,list 元素也可以是另一个list

>>>classmates = ['Michael','Bob',['asp','php'],'Tracy']

>>>classmates

list中的元素就像队列,我们可以使用切片的方法来存取它们的任意部分。[start:stop:step]即[开始索引:结束索引:步长值],注意:步长值不能为0。


2. 另一种有序列表叫元组:tuple。tuple和 list非常类似,但是 tuple 一旦初始化就不能修改

使用括号 () 可以表示 tuple。

tuple 所谓的“不变”是说,tuple 的每个元素,指向永远不变。即指向 'a' ,就不能改成指向 'b' ,指向一个 list,就不能改成指向其他对象,但指向的这个list 本身是可变的!创建一个内容也不变的 tuple,就必须保证 tuple 的每一个元素本身也不能变。list 和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们。

tuple 常用的两个方法是:count()统计某个元组元素的个数和index()返回某个元素的下标。

注意:单个tuple元素的时候,元素后面要加‘,’,否则python解释器不会识别成tuple类型。


3. Python 内置了字典:dict 的支持,dict全称 dictionary,在其他语言中也称为 map,使用键-值(key-value)存储,具有极快的查找速度。字典由键和对应值成对组成。字典也被称作关联数组或哈希表。

字典的创建:

  •  直接创建字典

>>>d={'one':1,'two':2,'three':3}

>>>print d

  • 通过dict创建字典或者通过关键字创建字典

>>>items=[('one',1),('two',2),('three',3),('four',4)]

>>>print u'items中的内容:'

>>>print items

>>>print u'利用dict创建字典,输出字典内容:'

>>>d=dict(items)

>>>print d

注意:
每个键与值用冒号隔开(:),每对用逗号,每对用逗号分割,整体放在花括号中({})。
键必须独一无二,但值则不必。
值可以取任何数据类型,但必须是不可变的,如字符串,数或元组。

字典的方法:

  1. clear函数:清除字典中的所有项

  2. copy函数:返回一个具有相同键值的新字典

  3. fromkeys函数:使用给定的键建立新的字典,键默认对应的值为Non

  4. get函数:访问字典成员,get函数可以访问字典中不存在的键,当该键不存在是返回None

  5. has_key函数:检查字典中是否含有给出的键

  6. items和iteritems函数:items将所有的字典项以列表方式返回,列表中项来自(键,值),iteritems与items作用相似,但是返回的是一个迭代器对象而不是列表

  7. keys和iterkeys:keys将字典中的键以列表形式返回,iterkeys返回键的迭代器

  8. pop函数:删除字典中对应的键

  9. popitem函数:移出字典中的项

  10. setdefault函数:类似于get方法,获取与给定键相关联的值,也可以在字典中不包含给定键的情况下设定相应的键值

  11. update函数:用一个字典更新另外一个字典

  12. values和itervalues函数:values以列表的形式返回字典中的值,itervalues返回值得迭代器,由于在字典中值不是唯一的,所以列表中可以包含重复的元素

把数据放入dict 的方法,除了初始化时指定外,还可以通过key放入:由于一个key 只能对应一个 value,所以,多次对一个 key放入 value,后面的值会把前面的值冲掉:1.要避免key 不存在的错误,有两种办法,一是通过 in 判断 key是否存在:2.通过dict 提供的 get方法,如果 key不存在,可以返回 None,或者自己指定的value:

注意:dict 内部存放的顺序和 key放入的顺序是没有关系的。

和list 比较,dict有以下几个特点:

1. 查找和插入的速度极快,不会随着 key 的增加而增加;

2. 需要占用大量的内存,内存浪费多。

而list 相反:

1. 查找和插入的时间随着元素的增加而增加;

2. 占用空间小,浪费内存很少。

所以,dict 是用空间来换取时间的一种方法。

dict 可以用在需要高速查找的很多地方,在 Python代码中几乎无处不在,正确使用 dict非常重要,需要牢记的第一条就是dict 的key必须是不可变对象。

这是因为dict 根据 key来计算 value 的存储位置,如果每次计算相同的 key 得出的结果不同,那dict 内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。

要保证hash 的正确性,作为key 的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而 list是可变的,就不能作为 key:set和 dict 类似,也是一组key的集合,但不存储 value。由于 key 不能重复,所以,在 set中,没有重复的key。

set和 dict 的唯一区别仅在于没有存储对应的 value,但是,set的原理和 dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证 set内部“不会有重复元素”。