Python操作列表的常⽤⽅法分享下⾯列出列表常⽤的⽅法操作列表以及⼩例⼦:
1.  Append
在列表末尾添加元素,需在列表末尾添加元素,需要注意⼏个点:
A. append中添加的参数是作为⼀个整体
复制代码代码如下:
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.append(list(" tiger"))
>>> name
['s', 'c', 'o', 't', 't', [' ', 't', 'i', 'g', 'e', 'r']]
得到的值不是:['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r']
如果想要这种的追加⽅式,可以试试分⽚赋值(或者下⾯说到的extend⽅法):
复制代码代码如下:
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name[len(name):] = list(" tiger")      #从末尾追加
>>> name
['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r']
B.append⼀次性只能添加⼀个元素
复制代码代码如下:
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.append("A","B")        #添加多个元素即将报错
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: append() takes exactly one argument (2 given)
>>> name.append("A")
>>> name
['s', 'c', 'o', 't', 't', 'A']
2. Count
统计某个元素在列表中出现的次数
复制代码代码如下:
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> unt('s')
1
>>> unt("t")
2
>>> unt("A")
>>> name.append(list("Python"))
>>> name
['s', 'c', 'o', 't', 't', ['P', 'y', 't', 'h', 'o', 'n']]
>>> unt(['P', 'y', 't', 'h', 'o', 'n'])
1
3. Extend
在原列表追加另⼀个序列的中的多个值
复制代码代码如下:
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> d(list(" tiger"))
>>> name
['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r']
当然,我们可以⽤分⽚赋值来实现:
复制代码代码如下:
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name[len(name):] = list(" tiger")
>>> name
['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r']
这时⼩伙伴们会想到,我们可以直接⽤操作符"+"嘛,还⽅便些:
复制代码代码如下:
>>> name = list("scott")
>>> pwd  = list(" tiger")
>>> name + pwd
['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r']
>>> name
['s', 'c', 'o', 't', 't']
从这三种⽅式操作的输出,可以看出:
extend和分⽚赋值都是修改原列表,相对⽽⾔,extend可读性强些,⽽操作符"+"是⽣成⼀个新的列表,不影响原列表,如果我们需要⽣成新列表⽽不影响原列表,就可以⽤操作符"+"。
4.Index
从列表中出某个值第⼀个(注意是第⼀个)匹配项的索引位置
复制代码代码如下:
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.index('t')    ##第⼀个字母t的索引位置是3
3
>>> name.index('a')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ValueError: list.index(x): x not in list
>>> 'a' in name
False
>>> 'a' not in name
True
从输出可以看出,index的是第⼀个匹配项的索引位置,⽽如果查的元素不在列表中,会报错(返回-1会不会好⼀点呢?),当然如果想避免报
错,我们可以先⽤in操作,判断某个元素是否在某个列表中,如果在的话,然后进⾏index操作。
5. Insert
⽤于将对象插⼊到列表中,俩个参数,第⼀个是索引位置,第⼆个插⼊的元素对象。
复制代码代码如下:
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.insert(2,'tiger')    ##在索引为2的地⽅插⼊字符串tiger
>>> name
['s', 'c', 'tiger', 'o', 't', 't']
我们也可以⽤分⽚赋值:
复制代码代码如下:
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name[2:2] = ['tiger']
>>> name
['s', 'c', 'tiger', 'o', 't', 't']
>>> name[2:2] = 'tiger'
>>> name
['s', 'c', 't', 'i', 'g', 'e', 'r', 'tiger', 'o', 't', 't']
这⾥需要注意的是,如果是插⼊⼀个元素,需要⽤[]括起来,不然,直接⽤字符串的话,是插⼊字符串的列表,在索引位置之后添加。
当然,⽤insert的可读性⽐分⽚赋值强。
6. Pop
移除列表中的⼀个元素(最后⼀个元素),并返回该元素的值
复制代码代码如下:
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.pop()
't'
>>> name
['s', 'c', 'o', 't']
>>> name.append("t")
>>> name
['s', 'c', 'o', 't', 't']
分⽚赋值模拟pop:
复制代码代码如下:
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name[len(name)-1:] = []
>>> name
['s', 'c', 'o', 't']
这上⾯⽤pop和append模拟了栈的先进先出LIFO。
7. Remove
移除列表中某个值的第⼀匹配项:如果有俩个相等的元素,就只是移除匹配的⼀个元素,如果某元素不存在某列表中,便会报错,⽽且⼀次性只能
移除⼀个元素。
复制代码代码如下:
>>> name = list("scott")
python正则表达式判断>>> name
['s', 'c', 'o', 't', 't']
>>> ve("t")    #去掉第⼀个t
>>> name
['s', 'c', 'o', 't']
>>> ve("A")    #不存在会报错
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ValueError: ve(x): x not in list
>>> "A" not in name
True
>>> ve("s","c")  #⼀次只能移除⼀个元素
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: remove() takes exactly one argument (2 given)
8.Revense
将列表中的元素反向
复制代码代码如下:
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> verse()
>>> name
['t', 't', 'o', 'c', 's']
9. Sort & Sorted
sort⽅法⽤于对列表进⾏排序,修改原列表,不会返回⼀个已排序的列表副本
复制代码代码如下:
>>> result = [8,5,5,3,9]
>>> result.sort()
>>> result
[3, 5, 5, 8, 9]
如果我们想要返回⼀个已排序的列表副本,⽽不影响原来的列表呢,⼀种⽅法,我们可以先赋值原来列表(可以⽤分⽚赋值复制),然后
在复制的列表上做sort操作,另⼀种⽅法,就是使⽤sorted函数,它会返回已排序的列表副本:
复制代码代码如下:
>>> result = [8,5,5,3,9]
>>> result2 = sorted(result)
>>> result
[8, 5, 5, 3, 9]
>>> result2
[3, 5, 5, 8, 9]
关于⾃定义的⽐较⽅法,像javascript做sort可以传⼊compare函数,java可以传⼊Comparable<T>实例,Python也类似,留待后续了~(@^_^@)~。