一、函数list
list[列表]
作用:可将字符串转换为列表
>>> s = 'abcde' >>> l = list(s) >>> l ['a', 'b', 'c', 'd', 'e'] >>> ''.join(l)#join无法转换数字列表 'abcde' >>> '+'.join(l) 'a+b+c+d+e' >>>
类似的函数有split
>>> 字符串 = '10203040 ' >>> 字符串.split('0') ['1', '2', '3', '4', ' ']
二、基本的列表操作
1、修改列表:给元素赋值
列表[索引] = 值
#不能给不存在的元素赋值,如果需要这样做,则需要提前初始化列表
>>> l = [1,2,3,4] >>> l[0] = 2 >>> l [2, 2, 3, 4] >>> l[4] = 1 Traceback (most recent call last): File "<pyshell#17>", line 1, in <module> l[4] = 1 IndexError: list assignment index out of range >>> l = [None]*10 >>> l[9] = 1 >>> l [None, None, None, None, None, None, None, None, None, 1]
2、删除元素
del 列表[索引]
>>> l = [1,2,3,4] >>> del l[0] >>> l [2, 3, 4]
3、给切片赋值
列表[索引1:索引2:步长] = 值
(1)可替换为长度不同的序列
>>> l = [1,2,3,4,5] >>> l[1:3] = '拿来吧你' >>> l [1, '拿', '来', '吧', '你', 4, 5] >>> l = [1,2,3,4,5] >>> l[1:3] = ['拿来吧你'] >>> l [1, '拿来吧你', 4, 5]
(2)可插入新元素,可以是多个元素
>>> l = [0,1,2,3,4,5] >>> l[1:1] = ['在索引1前插入']+list('abc') >>> l [0, '在索引1前插入', 'a', 'b', 'c', 1, 2, 3, 4, 5] >>> l = [0,1,2,3,4,5] >>> l[5:5] = ['在索引5前插入'] >>> l [0, 1, 2, 3, 4, '在索引5前插入', 5] >>>
(3)可删除指定范围元素
>>> l = [1,2,3,4,5] >>> l[1:3] = [] >>> l [1, 4, 5]
三、列表方法
对象.方法(参数)
1、append
列表.append(值)
作用:在列表末尾插入元素,单个元素
#append和其他类似方法一致,会直接修改旧列表,不会返回新列表
>>> l = [1,2,3] >>> l.append(4) >>> l [1, 2, 3, 4]
2、clear
列表.clear()
作用:清空列表
>>> l = [1,2,3] >>> l.clear() >>> l []
3、copy
列表2 = 列表1.copy()
作用:复制列表。常规复制只是将另一个名称关联到同一列表,要让a和b指向不同的列表
#常规复制,指向同一列表 >>> lst_1 = [1,2,3] >>> lst_2 = lst_1 >>> lst_2.append(4) >>> lst_1 [1, 2, 3, 4] #copy复制,指向不同列表,一个是原件,一个是副本 >>> lst_1 = [1,2,3] >>> lst_2 = lst_1.copy() >>> lst_2.append(4) >>> lst_1 [1, 2, 3]
4、count
列表.count(元素)
作用:计算指定元素在列表中出现了多少次
>>> lst = [1,2,3,[1,2,[1,2,3]],3,[1,2]] >>> lst.count(1) 1 >>> lst.count([1,2]) 1
5、extend
列表.extend(扩展列表)
作用:插入看多个值到列表队尾
>>> lst = [1,2,3] >>> ex_lst = [4,5,6,7] >>> lst.extend(ex_lst) >>> lst [1, 2, 3, 4, 5, 6, 7]
6、index
列表.index(元素)
作用:查找指定元素第一次出现的索引
>>> lst = ['who','who','are','you'] >>> lst.index('who') 0
7、insert
列表.insert(索引,值)
作用:将对象插入指定位置,单个元素
>>> lst = [0,1,2,3,4] >>> lst.insert(0,'索引0前插入') >>> lst ['索引0前插入', 0, 1, 2, 3, 4] >>> lst.insert(2,list('索引2前插入')) >>> lst ['索引0前插入', 0, ['索', '引', '2', '前', '插', '入'], 1, 2, 3, 4]
8、pop
列表.pop(索引选填,默认为左后一个元素)
作用:从列表中删除一个元素(默认为最后一个元素),并返回该元素
>>> lst = [1,2,3,4,5] >>> m = lst.pop() >>> m 5 >>> lst [1, 2, 3, 4] >>> lst.pop(2) 3 >>> lst [1, 2, 4]
用pop可实现一种常见的数据结构——栈(stack)。后进先出(LIFO)
9、remove
列表.remove(值)
作用:删除第一个匹配指定值的元素,不会和pop一样返回删除的值
>>> x = [1,2,3,1,2,3] >>> x.remove(2) >>> x [1, 3, 1, 2, 3]
10、reverse
列表.reverse()
作用:反序排列列表元素,修改列表,无返回值
>>> lst = [1,2,3,4,5] >>> lst.reverse() >>> lst [5, 4, 3, 2, 1]
11、sort
列表.sort()
作用:使元素按序排列,修改列表,无返回值
>>> lst = [2,45,23,11,3,5,234] >>> lst.sort() >>> lst [2, 3, 5, 11, 23, 45, 234]
如果想保留排序前的序列,可以先copy一个副本,再sort
或者使用函数sorted,同样可以使元素按序排列,但会返回一个新的列表,且旧列表不受影响
>>> lst = [2,45,23,11,3,5,234] >>> lst1 = sorted(lst) >>> lst [2, 45, 23, 11, 3, 5, 234] >>> lst1 [2, 3, 5, 11, 23, 45, 234]
sorted函数可以应用于任意一个序列,但总是返回一个列表
>>> sorted('asdwfrtasdccd') ['a', 'a', 'c', 'c', 'd', 'd', 'd', 'f', 'r', 's', 's', 't', 'w']
若要将序列按元素倒序排列,可以先用sort或sorted,再用reverse
12、高级排序
方法sort接受两个可选参数:key和reverse。
(1)key,排序条件
(2)reverse,正序还是倒序(False/True)
>>> lst = ['dasd','qwdqwqwd','eee','1'] >>> lst.sort(key=len) >>> lst ['1', 'eee', 'dasd', 'qwdqwqwd']
>>> lst = ['dasd','qwdqwqwd','eee','1'] >>> lst.sort(key=len,reverse=True) >>> lst ['qwdqwqwd', 'dasd', 'eee', '1']