第四章 内置数据结构

4.1 元组

4.1.1 元组的创建

元组(Tuple)由一系列元素组成,所有元素被包含在一对圆括号中。元组是写保护的,一旦创建,不能再做任何修改。

tuple1 = ()   空元组

tuple_name = ("apple", )  只包括一个元素的元组,注意,这个逗号不能丢,否则会被python误以为圆括号中的内容为表达式。

print tuple[0] 即会输出"apple"。如果没有逗号,则为输出"a"。

4.1.2 元组的访问

元组创建后其内部元素的值不能被修改,否则会报错:TypeError: "tuple" object does not support item assignment.

元组支持负索引,即从元组的尾部开始计数,最尾端的元素索引表示为“-1”。

分片(Slice)是元组的一个子集(还是元组)。分片是从第1个索引(包括)到第2个索引(不包括)所指定的所有元素。

tuple = ("apple", "banana", "grape", "orange")

print tuple[0: -2] ("apple", "banaba")

print tuple[2: -2] ()

Python支持多元元组。元组索引访问越界:IndexError: tuple index out of range.

Python中将创建元组的过程称之为“打包”,反之为“解包”。

#打包

tuple = ("apple", "banana", "grape", "orange")

#解包

a, b, c, d = tuple

4.1.3 元组的遍历

range()和len()这两个函数是python的内建函数,这些函数可直接调用,不需要import语句导入模块。

所有内建函数是python自动导入的函数,相当于java中的lang包。

range()返回一个递增或递减的数字列表,如range(5)返回的列表为[0, 1, 2, 3, 4]。

可以使用map()对tuple元组进行解包,得到每个子元组,然后对每个子元组进行遍历。

for a in map(None, tuple): #tuple是二维元组,map后的a即为每个子元组(一维)


4.2 列表(List)

4.2.1 列表的创建

list = ["apple", "banana", "grape", "orange"]

list.append("watermelon") #列表的追加

list.insert(1, "fruit") #列表的添加

list.remove("grape") #列表的删除,如果该元素不在列表中,则ValueError: list.remove(x): x not in list

list.pop() #弹出列表的最后一个元素

如果列表中存在两个相同的元素,则remove()操作只删除列表中位置先前的那个元素。

4.2.2 列表的使用方法

list[-3: -1]还是列表

列表的连接:list1 + list2;list1.extend(list2);list*2

4.2.3 列表的查找、排序与反转

print list.index("grape") #返回元素在列表中的位置

print "grape" in list #返回True或False

list.sort() #列表的排序。默认采用首字母升序排列。如果设置参数reverse=True,则采用首字母降序排列。

Python的列表由类list实现,使用函数help(list)可以查看list类的定义。



4.2.4 用列表实现堆栈和队列

堆栈:append("apple"),pop()。

队列:pop(0)弹出队首元素,append("apple")在队尾加入元素。


4.3 字典

4.3.1 字典的创建

dict = {"a" : "apple", "b" : "banana", "g" : "grape"}

print dict["a"]

字典是无序的,字典将根据每个元素的Hashcode值进行排列。