第四章 内置数据结构
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值进行排列。