除前面章节介绍的增长元素、删除元素、修改元素方法以外,列表还包含了一些经常使用的方法。
例如,在交互式解释器中输入 dir(list) 便可看到列表包含的全部方法,以下所示:python
>>> dir(list) ['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>>
在上面输出结果中己经剔除了那些以双下画线开头的方法。按照约定,这些方法都具备特殊的意义,不但愿被用户直接调用。
上面有些方法前面己经介绍过了,接下来给你们介绍另外的一些经常使用方法。编程
此方法用于统计列表中某个元素出现的次数,其基本语法格式为:数据结构
listname.count(obj)app
其中,listname 表明列表名,obj 表示判断是否存在的元素。
下面代码示范了 count() 方法的用法:编程语言
a_list = [2, 30, 'a', [5, 30], 30] # 计算列表中30的出现次数 print(a_list.count(30)) # 计算列表中[5, 30]的出现次数 print(a_list.count([5, 30]))
运行结果为:函数
2 1
index() 方法用于定位某个元素在列表中出现的位置(也就是索引),若是该元素没有出现,则会引起 ValueError 错误。
此方法的基本语法格式为:编码
listname.index(obj,start,end)spa
同 count() 方法不一样,index() 方法还可传入 start、end 参数,用于在列表的指定范围内搜索元素。
以下代码示范了 index() 方法的用法:.net
a_list = [2, 30, 'a', 'b', 'crazyit', 30] # 定位元素30的出现位置 print(a_list.index(30)) # 从索引2处开始、定位元素30的出现位置 print(a_list.index(30, 2)) # 从索引2处到索引4处之间定位元素30的出现位置,由于找不到该元素,会引起 ValueError 错误 print(a_list.index(30, 2, 4))
运行结果为:code
1 5 Traceback (most recent call last): File "C:\Users\mengma\Desktop\1.py", line 7, in <module> print(a_list.index(30, 2, 4)) # ValueError ValueError: 30 is not in list
pop() 方法会移除列表中指定索引处的元素,并返回该元素,若是不指定索引,默认会移除列表中最后一个元素。该方法的基本语法格式为:
listname.pop(index)
例如:
a_list=[1, 2, 3, 9, 'hello'] # 移除列表的元素 3 print(a_list.pop()) print(a_list) # 移除列表中索引为 0 的元素1 print(a_list.pop(0)) print(a_list) # 变量x01获取移除的元素 x01 = a_list.pop(1) print(a_list)
运行结果为:
hello [1, 2, 3, 9] 1 [2, 3, 9] [2, 9]
注意,使用 pop() 方法能够实现一种常见的数据结构——栈。栈是一种特殊的数据结构,它可实现先入后出(FILO)功能,即先加入栈的元素,反然后出栈。
在其余编程语言所实现的“栈”中,每每会提供一个 push() 方法,用于实现入栈操做,但 Python 的列表并无提供 push() 方法,咱们可使用 append() 方法来代替 push() 方法实现入栈操做。
下面代码示范了使用列表做为“栈”的示例:
stack = [] # 向栈中“入栈”3个元素 stack.append("fkit") stack.append("crazyit") stack.append("Charlie") print(stack) # ['fkit', 'crazyit', 'Charlie'] # 第一次出栈:最后入栈的元素被移出栈 print(stack.pop()) print(stack) # ['fkit', 'crazyit'] # 再次出栈 print(stack.pop()) print(stack) # ['fkit']
运行结果为:
['fkit', 'crazyit', 'Charlie'] Charlie ['fkit', 'crazyit'] crazyit ['fkit']
上面程序中,第 8 行实现了第一次出栈操做,该操做将会把最后一次添加的元素移出栈,且该方法会返回出栈的元素。所以,执行这行代码将会看到输出 Charlie。
与全部编程语言相似的是,出栈操做既会移出列表的最后一个元素,也会返回被移出的元素。
reverse() 方法会将列表中全部元素反向存放。该方法的基本语法格式为:
listname.reverse()
例如:
a_list = list(range(1, 8)) # 将a_list列表元素反转 a_list.reverse() print(a_list)
运行结果为:
[7, 6, 5, 4, 3, 2, 1]
从上面的运行结果能够看出,调用 reverse() 方法将反转列表中的全部元素。
sort() 方法用于对列表元素进行排序,排序后原列表中的元素顺序会方发生改变。sort() 方法的语法格式以下:
listname.sort(key=None, reserse=False)
能够看到,和其余方法不一样,此方法中多了 2 个参数,它们的做用分别是:
例如以下代码:
a_list = [3, 4, -2, -30, 14, 9.3, 3.4] # 对列表元素排序 a_list.sort() print(a_list) b_list = ['Python', 'Swift', 'Ruby', 'Go', 'Kotlin', 'Erlang'] # 对列表元素排序:默认按字符串包含的字符的编码大小比较 b_list.sort() print(b_list) # ['Erlang', 'Go', 'Kotlin', 'Python', 'Ruby', 'Swift']
运行结果为:
[-30, -2, 3, 3.4, 4, 9.3, 14] ['Erlang', 'Go', 'Kotlin', 'Python', 'Ruby', 'Swift']
以下代码示范了 key 和 reverse 参数的用法:
b_list = ['Python', 'Swift', 'Ruby', 'Go', 'Kotlin', 'Erlang'] # 指定key为len,指定使用len函数对集合元素生成比较的键,也就是按字符串的长度比较大小 b_list.sort(key=len) print(b_list) # 指定反向排序 b_list.sort(key=len, reverse=True) print(b_list)
运行结果为:
['Go', 'Ruby', 'Swift', 'Python', 'Kotlin', 'Erlang'] ['Python', 'Kotlin', 'Erlang', 'Swift', 'Ruby', 'Go']
上面两次排序时都将 key 参数指定为 len,这意味着程序将会使用 len() 函数对集合元素生成比较大小的键,即根据集合元素的字符串长度比较大小。
注意,采用 sort() 方法对列表进行排序时,对中文支持很差,其排序结果与经常使用的音序排序法或者笔画排序法都不一致,所以,若是须要实现对中文内容的列表排序,还须要从新编写相应的方法进行处理,而不能直接使用 sort() 方法。
除此以外,须要指出的是,在 Python 2.x 中,列表的 sort() 方法还可传入一个比较大小的函数,该函数负责比较列表元素的大小。该函数包含两个参数,当该函数返回正整数时,表明该函数的第一个参数大于第二个参数;当该函数返回负整数时,表明该函数的第一个参数小于第二个参数;返回 0,则意味着两个参数相等。