在“串列 list”文章里已经介绍了串列的建立、新增、修改...等功能,这篇教学会介绍串列的查询、排序、复制...等其他相关的操作方法。

sort() 函式使用后,会直接将原本的串列项目进行排序,因此“会改变”原始的串列。

sorted() 函式使用后,会产生一个排序过后的新串列,因此“不会改变”原始的串列。

如果序列的内容也是序列,排序时可以透过 key 参数,指定对应的项目进行排序,下面的范例使用匿名函式 lambda ( 参考 匿名函式 lambda ),针对每个项目的第二个子项目进行排序 ( 如果没有设定 key 参数,预设都以第一个项目进行排序 )。

使用 slice 反转串列方法不会改变原始串列,会产生一个新的串列,在产生新串列时使用“[::-1]”,就能反转串列内容。

上述的三种方式只能针对“项目内容不会发生变化”的串列,如果项目的“深层内容”会发生变化,就会出现奇怪的现象,举例来说,下方的程式码执行后,当 a 改变时理应不该影响到 b、c、d 这三个新串列,但执行结果却发现 b、c、d 的内容也跟着改变了。

如果要解决这个问题,就必须要 import copy() 模组,使用 deepcopy() 进行深度复制,就能产生一个完全独立的新串列。

index() 函式可以取得串列中某个内容的 offset,如果有多个同样内容的项目,以第一个找到的为主。

count() 函式可以计算串列中,某些内容出现的次数。

join() 函式可以将一个串列里面所有的项目,串连起来变成一个字串,使用时用一个要接起来的字串,连结要结合的每个项目。

使用星号“*”可以重复串列的内容,使其变成一个新的串列。