Python 列表的一些操作 函数&方法
- 列表元素个数
len(list)
,有返回值 - 返回列表元素最大值
max(list)
,有返回值 - 返回列表元素最小值
min(list)
,有返回值
上面三个是用的比较多的函数(可以看到参数都是列表,形式为 函数名(列表名)
),接下来介绍用的比较多的方法(形式多为 列表名.方法(参数)
)
- 在列表末尾添加新的对象
list.append(obj)
,无返回值 - 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.extend(seq)
,无返回值 - 统计某个元素在列表中出现的次数
list.count(obj)
,有返回值 - 从列表中找出某个值第一个匹配项的索引位置
list.index(obj)
,有返回值 - 将对象插入列表
list.insert(index,obj)
,无返回值 - 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.pop(index)
,有返回值 - 移除列表中某个值的第一个匹配项
list.remove(obj)
,无返回值 - 反向列表中元素
list.reverse()
,无返回值 - 对原列表进行永久排序(无返回值)
list.sort(cmp=None, key=None, reverse=False)
在最后补充了一个sorted函数实现临时排序,有返回值
接下来一个个的举个例子便于理解
注 :有返回值的都可以赋值给一个变量,这点放在前面
1、len(list)函数
参数
- list -- 要计算元素个数的列表。
返回值
- 返回列表元素个数。
示例
list1, list2 = [123, 'xyz', 'zara'], [456, 'abc']
print("First list length : ", len(list1))
print("Second list length : ", len(list2))
输出
First list length : 3
Second lsit length : 2
2、max(list)函数
参数
- list -- 要返回最大值的列表。
返回值
- 返回列表元素中的最大值。
示例
list1, list2 = ['123', 'xyz', 'zara', 'abc'], [456, 700, 200]
print("Max value element : ", max(list1))
print("Max value element : ", max(list2))
输出
Max value element : zara
Max value element : 700
注:列表元素是字符串的同字符串比较,比较 ACSII 码
3、min(list)函数
参数
- list -- 要返回最小值的列表。
返回值
- 返回列表元素中的最小值。
示例
list1, list2 = [123, 'xyz', 'zara', 'abc'], [456, 700, 200]
print("min value element : ", min(list1))
print("min value element : ", min(list2))
输出
min value element : 123
min value element : 200
4、 list.append(obj)方法
参数
- obj -- 添加到列表末尾的对象。
返回值
- 该方法无返回值,但是会修改原来的列表。
示例1
aList = [123, 'xyz', 'zara', 'abc']
aList.append( 2009 )
print("Updated List : ", aList)
输出
Updated List : [123, 'xyz', 'zara', 'abc', 2009]
示例2
name = list("scott")
print(name)
name.append(list(" tiger"))
print(name)
输出
['s', 'c', 'o', 't', 't']
['s', 'c', 'o', 't', 't', [' ', 't', 'i', 'g', 'e', 'r']]
注:append 把 list(" tiger")
这个列表当成一个元素追加上去了,若想实现 [’s’, ‘c’, ‘o’, ‘t’, ‘t’, ’ ‘, ‘t’, ‘i’, ‘g’, ‘e’, ‘r’]
的效果,则见 extend 函数 或利用 分片赋值
分片赋值
示例
name = list("scott")
print(name)
name[len(name):] = list(" tiger")
print(name)
输出
['s', 'c', 'o', 't', 't']
['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r']
5、 list.extend(seq)方法
参数
- seq -- 元素列表。
返回值
- 该方法没有返回值,但会在已存在的列表中添加新的列表内容。
示例1
aList = [123, 'xyz', 'zara', 'abc', 123]
bList = [2009, 'manni']
aList.extend(bList)
print("Extended List : ", aList)
输出
Extended List : [123, 'xyz', 'zara', 'abc', 123, 2009, 'manni']
示例2
name = list("scott")
print(name)
name.extend(list(" tiger"))
print(name)
输出
['s', 'c', 'o', 't', 't']
['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r']
6、list.count(obj)方法
参数
- obj -- 列表中统计的对象。
返回值
- 返回元素在列表中出现的次数。
示例
aList = [123, 'xyz', 'zara', 'abc', 123]
print("Count for 123 : ", aList.count(123))
print("Count for zara : ", aList.count('zara'))
输出
Count for 123 : 2
Count for zara : 1
7、list.index(obj, start, end)方法
包含起始下标,不包含终止下标,从列表中找出 第一个
(注意是第一个)与目标值匹配项的索引位置
参数
- obj-- 查找的对象。
- start-- 可选,查找的起始位置,默认0。
- end-- 可选,查找的结束位置,默认查找到最后。
返回值
- 该方法返回查找对象的索引位置,如果没有找到对象则抛出异常。
示例
aList = [123, 'xyz', 'runoob', 'abc']
print("xyz 索引位置: ", aList.index('xyz'))
print("runoob 索引位置 : ", aList.index('runoob', 1, 3))
输出
xyz 索引位置: 1
runoob 索引位置 : 2
8、list.insert(index, obj)方法
参数
- index -- 对象 obj 需要插入的索引位置。
- obj -- 要插入列表中的对象。
返回值
- 该方法没有返回值,但会在列表指定位置插入对象。
示例
aList = [123, 'xyz', 'zara', 'abc']
aList.insert( 3, 2009)
print("Final List : ", aList)
输出
Final List : [123, 'xyz', 'zara', 2009, 'abc']
9、list.pop(index)方法
参数
- obj -- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。
返回值
- 该方法返回从列表中移除的元素对象。
示例
list1 = ['Google', 'Runoob', 'Taobao']
list_pop=list1.pop(1)
print("删除的项为 :", list_pop)
print("列表现在为 : ", list1)
输出
删除的项为 : Runoob
列表现在为 : ['Google', 'Taobao']
10、list.remove(obj)方法
参数
- obj -- 列表中要移除的对象。
返回值
- 该方法没有返回值但是会移除列表中的某个值的
第一个
匹配项。
示例
aList = [123, 'xyz', 'zara', 'abc', 'xyz']
aList.remove('xyz')
print("List : ", aList)
aList.remove('abc')
print("List : ", aList)
输出
List : [123, 'zara', 'abc', 'xyz']
List : [123, 'zara', 'xyz']
11、list.reverse()方法
参数
- NA。
返回值
- 该方法没有返回值,但是会对列表的元素进行反向排序。
示例
aList = [123, 'xyz', 'zara', 'abc', 'xyz']
aList.reverse()
print("List : ", aList)
输出
List : ['xyz', 'abc', 'zara', 'xyz', 123]
12、list.sort(cmp=None, key=None, reverse=False)方法
参数
- cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
返回值
- 该方法没有返回值,但是会对列表的对象进行排序。
示例默认升序排序
aList = [123, 'Google', 'Runoob', 'Taobao', 'Facebook'];
aList.sort();
print("List : ", aList)
输出
List : [123, 'Facebook', 'Google', 'Runoob', 'Taobao']
示例降序输出列表
vowels = ['e', 'a', 'u', 'o', 'i']
vowels.sort(reverse=True)
print('降序输出:', vowels)
输出
降序输出: ['u', 'o', 'i', 'e', 'a']
示例通过指定列表中的元素排序来输出列表
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
random.sort(key=takeSecond) # 指定第二个元素排序
print('排序列表:', random)
输出
排序列表:[(4, 1), (2, 2), (1, 3), (3, 4)]
13、sorted(iterable, cmp=None, key=None, reverse=False)函数
参数
- iterable -- 可迭代对象。
- cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
返回值
- 返回重新排序的列表。
示例
a = [5,7,6,3,4,1,2]
b = sorted(a)
print(a)
print(b)
输出
[5, 7, 6, 3, 4, 1, 2]
[1, 2, 3, 4, 5, 6, 7]
示例 利用cmp函数 、 利用key
L=[('b',2),('a',1),('c',3),('d',4)]
sorted(L, cmp=lambda x,y:cmp(x[1],y[1])) # 利用cmp函数
print(L)
sorted(L, key=lambda x:x[1]) # 利用key
print(L)
输出
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
注: key 和 reverse 比一个等价的 cmp 函数处理速度要快。这是因为对于每个列表元素,cmp 都会被调用多次,而 key 和 reverse 只被调用一次
示例降序排
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=lambda s: s[2]) # 按年龄排序
print(students)
sorted(students, key=lambda s: s[2], reverse=True) # 按降序
print(students)
输出
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sort 方法 与 sorted 函数 的区别
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内联函数 sorted 方法返回的是一个新的
list,而不是在原来的基础上进行的操作。