列表操作
列表用一对 [] 生成,中间的元素用 , 隔开,其中的元素不需要是同一类型,同时列表的长度也不固定。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
长度
用 len 查看列表长度:
len(l)
访问列表
>>> li=[1,2,3,4]
>>> print(li)
[1, 2, 3, 4]
>>> for i in li:
... print(i)
>>> li=[1,2,3,4]
>>> i in li
True
#coding=UTF-8 li=[1,2,3] # print(li) # # for i in li: # print(i) print(1 in li)
列表索引
li=[a ,b ,c ,d ]
0 1 2 3
-4 -3 -2 -1
>>> li=[1,2,3,4]
>>> print(li[0])
1
>>> print(li[1])
2
>>> print(li[2])
3
#coding=UTF-8 a=[1,2,3,'a','b','c'] print(a[2:]) print(a[3:7]) print(a[:-1]) print(a[-1:])
列表切片
队列表中元素进行操作,比如说截取i->j,实际上截取的是i->j-1
a=[1,2,3,'a','b','c'] print(a[2:]) print(a[3:7]) print(a[:-1]) print(a[-1:])
拼接列表
>>> li=[1,2,3,4]
>>> li2=[10,20,30,40]
>>> print(li+li2)
[1, 2, 3, 4, 10, 20, 30, 40]
>>> li=[1,2,3,4]
>>> li2=['heygor','douyu','zhibo']
>>> print(li+li2)
[1, 2, 3, 4, 'heygor', 'douyu', 'zhibo']
#coding=utf-8 li1=['longgor','kenai'] li2=['naofu','xiaoju','dafeinang'] # print(li1+li2) c=li1+li2 for i in c: print(i)
更新列表
中括号中数字为元素的下标
>>> li=[1,2,3,4]
>>> li[0]=8
>>> print(li)
[8, 2, 3, 4]
>>> li[-2]=2,3
>>> print(li)
[8, 2, (2, 3), 4]
#coding=utf-8 l=[1,2,3] l[2]='heygor' print(l) l[2]=[4,5,6] print(l)
删除列表
Python提供了删除列表中元素的方法 'del'。
删除列表中的第一个元素:
>>> li=[1,2,3,4]
>>> del li[2]
>>> print(li)
[1, 2, 4]
#coding=utf-8 l=[1,2,3] print(l) del l[2] print(l)
测试从属关系
用 in 来看某个元素是否在某个序列(不仅仅是列表)中,用not in来判断是否不在某个序列中。
a = [10, 11, 12, 13, 14] print 10 in a print 10 not in a """ True False """
也可以作用于字符串:
s = 'hello world' print 'he' in s print 'world' not in s """ True False
"""
列表中可以包含各种对象,甚至可以包含列表:
a = [10, 'eleven', [12, 13]] a[2] #[12, 13]
a[2]是列表,可以对它再进行索引:
a[2][1] #13
测试从属关系
用 in 来看某个元素是否在某个序列(不仅仅是列表)中,用not in来判断是否不在某个序列中。
a = [10, 11, 12, 13, 14] print 10 in a print 10 not in a """ True False """
也可以作用于字符串:
s = 'hello world' print 'he' in s print 'world' not in s """ True False """
列表中可以包含各种对象,甚至可以包含列表:
a = [10, 'eleven', [12, 13]] a[2] #[12, 13]
a[2]是列表,可以对它再进行索引:
a[2][1] #13
列表方法
不改变列表的方法
列表中某个元素个数count
l.count(ob) 返回列表中元素 ob 出现的次数。
a = [11, 12, 13, 12, 11] a.count(11) #2
列表中某个元素位置index
l.index(ob) 返回列表中元素 ob 第一次出现的索引位置,如果 ob 不在 l 中会报错。
a.index(12) #1
不存在的元素会报错:
a.index(1) """ --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-26-ed16592c2786> in <module>() ----> 1 a.index(1) ValueError: 1 is not in list """
改变列表的方法
向列表添加单个元素
l.append(ob) 将元素 ob 添加到列表 l 的最后。
a = [10, 11, 12] a.append(11) print a #[10, 11, 12, 11]
append每次只添加一个元素,并不会因为这个元素是序列而将其展开:
a.append([11, 12]) print a #[10, 11, 12, 11, [11, 12]]
向列表添加序列
l.extend(lst) 将序列 lst 的元素依次添加到列表 l 的最后,作用相当于 l += lst。
a = [10, 11, 12, 11] a.extend([1, 2]) print a #[10, 11, 12, 11, 1, 2]
插入元素
l.insert(idx, ob) 在索引 idx 处插入 ob ,之后的元素依次后移。
a = [10, 11, 12, 13, 11] # 在索引 3 插入 'a' a.insert(3, 'a') print a #[10, 11, 12, 'a', 13, 11]
移除元素
l.remove(ob) 会将列表中第一个出现的 ob 删除,如果 ob 不在 l 中会报错。
a = [10, 11, 12, 13, 11] # 移除了第一个 11 a.remove(11) print a #[10, 12, 13, 11]
弹出元素
l.pop(idx) 会将索引 idx 处的元素删除,并返回这个元素。
a = [10, 11, 12, 13, 11] a.pop(2) #12
排序
l.sort() 会将列表中的元素按照一定的规则排序:
a = [10, 1, 11, 13, 11, 2] a.sort() print a #[1, 2, 10, 11, 11, 13]
如果不想改变原来列表中的值,可以使用 sorted 函数:
a = [10, 1, 11, 13, 11, 2] b = sorted(a) print a print b """ [10, 1, 11, 13, 11, 2] [1, 2, 10, 11, 11, 13] """
列表反向
l.reverse() 会将列表中的元素从后向前排列。
a = [1, 2, 3, 4, 5, 6] a.reverse() print a #[6, 5, 4, 3, 2, 1]
如果不想改变原来列表中的值,可以使用这样的方法:
a = [1, 2, 3, 4, 5, 6] b = a[::-1] print a print b """ [1, 2, 3, 4, 5, 6] [6, 5, 4, 3, 2, 1] """
如果不清楚用法,可以查看帮助:
a.sort?