除了简单的数据类型,Python 还允许我们将数据用不同方式组合起来创建结构体。最简单的结构体是线性结构体(sequences),它将信息一个接一个地存储起来,它分有两类:lists(列表)和tuples(元组)。另外也有非线性结构体,如:dict(字典)和 set(集合)。
结构体可以视为一种容器,内部所装的数据称为元素(element)。
List:列表
-
List 要用方括号 [x, y, z] 来标示,个数不限。
-
List 的元素可以是〝任意类型〞。
-
要建立空的 list,可以用 [] 或是不加参数的 list() 来建立。
-
利用索引从 list 中取得某元素的值。索引从 0 开始,不可以超出范围。可以是负数,代表倒数第几个。例如:-1 表示倒数第一个。
-
List 的元素可以是〝任意类型〞,因此也可以是容器。
>>>fruit = [ [‘苹果’, 82], [‘香蕉’, 45], [‘西瓜’, 60] ]
-
多层的容器,经常永来储存表格化的数据。
-
切片(Slicing)可以由 list 中切出一个 list 片段,例如:a[m:n] 可以由 list 中切出由 m 到 n 但不包含 n 的片段,切出来的片段长度为 n – m,m, n 均可为正或负数。若 m 省略,则预设为 0,若 n 省略,则为到最后一个。
-
所谓的切片,并不会改变原来 list 中数据,只是另外 Copy 出一段数据而已。
-
在 [ m : n ] 中 m 的位置必须在 n 的前面(左边)才行,否则会视为无效范围而传回空 []。切片的长度为 n – m,当 n – m <= 0 时,结果就是空 []。例如:0 是最前面的位置,因此 n 不可以为 0,因为没有任何 m 是在 0 之前。
例如:a = [0, 1, 2, 3, 4, ‘last’]
-
指定间隔切片,我们可以使用 [ m : n : k ] 来指定间隔切片,其中 k 表示间隔,如果 k 为负数,则可反向(由右往左)切片,此时 n 的位置必须在 m 的左边才行。
例如:s = [ 0, 1, 2, 3, 4, 5, 6 ]
-
用切片更新容器内容。例如:a = [ 0, 1, 2, 3 ]
-
用 del 删除 list 的元素或切片的元素。
例如:a = [0, 1, 2, 3, 4, 5]
-
序列容器(list, tuple, string)常用的符号有三种:
a) 串接(+)和重复(*):例如:[ 1, 2 ] + [ 3, 4 ] 结果为 [ 1, 2, 3, 4 ],而 3 * [ 1, 2 ] 结果为 [ 1, 2, 1, 2, 1, 2 ]。
b) in, not in :「 e in s 」可判断 e 是否为 s 的元素。例如:2 in [ 1, 2, 3],其结果为 True。not in 则相反,判断 e 是否不存在 s 中。
c) 一般的比较算符(>, >=, <, <=, ==, !=):容器的比较是从第一个元素开始往后比较,若前面都相同,则先结束的较小。比较算符只能比较相同类型的数据。例如:[ 1, 2 ] < [ 1, 2, 3] 为 True,[‘a’, ‘b’] < [‘c’] 为 True。
容器常用的函式(Function)
-
len() 会算出容器元素的个数,但它只会算出第一层的个数,如果是多层容器,第二层以下(含第二层)都不会被计入。例如:len( [ [1, 2], [a, b], [3, 4]] ),其结果为 3。
-
max()、min() 会传回容器内元素的最大值及最小值,但元素之间必须可以比较大小才行。
-
sum() 则可以将容器内的元素加总,条件式其元素类型必须是数值。
-
sorted() 可以读取容器的所有元素,然后从小到大排序后放在新的 list 中传回。若想改为由大到小,则可多加一个 reverse=True 参数。
-
reversed() 则可以将容器中的元素反转(反过来排),例如:list(reversed([1, 2, 3, 0])),其结果为 [0, 3, 2, 1]。
List 的方法 (method)
-
list.sort() 与 sorted() 都会对 list 做排序,但 list.sort() 会真正改变 list 的内容,但 sorted() 虽会传回排序后的 list,不过却不更改原来的 list 内容。
-
list.reverse() 与 reversed() 的区别就如同 list.sort() 与 sorted() 一样。
-
insert(i, x) 可以在指定索引 i 的位置插入元素 x。
-
append( x ) 可以将元素 x 加到 list 最后面。
-
extend( t ) 或 += t 则可以将 list t 串接到 list 的最后面。
例如:s = [ 0, 1, 2]
-
index( x ) 可寻找 list 中第一个元素 x 的索引位置。
-
count( x ) 可计算有几个元素 x 。
-
remove( x ) 可删除第一个元素 x。
-
clear() 可将 list 清空。
-
pop( i ) 会取出索引 i 位置的值,并将其从 list 中删除。若 i 省略,则代表最后一个。
-
copy() 会复制一个 list。
例如: s = [0, 1, 2, 1, 3]