2.2列表(list)
列表是最常用的Python数据类型,同时也是最常用的数据存储容器,它可以存储任意对象(元素);它用逗号分隔各个元素并使用方括号([])括起来
2.2.1新增插入(list.append(element) ; list.insert(index,element))
list.append(element):在列表末尾增加一个元素
>>> a=[1,2,3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>>
list.insert(index,element):在指定索引位置前面插入一个元素,如果指定索引位置超出列表长度,则在列表最后插入该元素
>>> a=[1,2,3]
>>> a.insert(2,5)
>>> a
[1, 2, 5, 3]
>>>
2.2.2删除(del list[index];del list ; list.remove(element);list.pop())
del list(index):删除指定索引位置的元素,索引位置超出列表长度会报错IndexError: list assignment index out of range
>>> a=[1,2,2,3,2,3,4,5]
>>> del a[3] #删除第四个元素
>>> a
[1, 2, 2, 2, 3, 4, 5]
>>>
del list:删除整个列表
>>> a=[1,2,3]
>>> a
[1, 2, 3]
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>>
list.remove(element):删除列表中第一个指定元素,如果指定的元素列表中不存在会报错ValueError: list.remove(x): x not in list
>>> a
[1, 2, 2, 2, 3, 4, 5]
>>> a.remove(2) #删除列表中第一个2
>>> a
[1, 2, 2, 3, 4, 5]
>>>
list.pop():取出并删除对应索引位置的元素,不传索引位置默认取出删除最后一个元素
>>> a
[1, 2, 2, 3, 2, 3, 4, 5]
>>> a.pop() #取出并删除列表中最后一个元素
5
>>> a.pop(2) #取出并删除列表中第三个元素
2
>>> a
[1, 2, 3, 2, 3, 4]
>>>
2.2.3修改(list[index]=element)
list[index]=element:直接通过列表索引位置修改对应元素,如果修改的索引位置超出列表范围会报错:IndexError: list assignment index out of range
[1, 2, 2, 3, 4, 5, 5]
>>> a[1]=10
>>> a
[1, 10, 2, 3, 4, 5, 5]
>>>
2.2.4查看(list[index];遍历)
list[index]:直接通过索引查看对应位置的元素,如果查看的索引位置超出列表范围会报错:IndexError: list index out of range
遍历:顺序查看列表中每一个元素
for I in list:
print I
>>> a
[1, 10, 2, 3, 4,]
>>> a[3]
3
>>> for i in a:
... print i
...
1
10
2
3
4
>>>
2.2.5长度len(list)
len(list):返回列表长度
>>> a
[1, 10, 2, 3, 4]
>>> len(a)
5
>>>
2.2.6数学计算(list1.extend(list2);list1+list2;list1*(num);cmp(list1,list2))
list1+list2:两个list元素合并形成新的list
>>> a
[1, 10, 2, 3, 4]
>>> a+[1,2,3]
[1, 10, 2, 3, 4, 1, 2, 3]
list1.extend(list2):在list1的末尾插入list2中的所有元素
>>> a
[1, 10, 2, 3, 4]
>>> a.extend([4,5,6])
>>> a
[1, 10, 2, 3, 4, 4, 5, 6]
>>>
list1*(num):将list1中的元素复制num次,生成一个新的list
>>> a=[1,2,3]
>>> a*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> a
[1, 2, 3]
>>>
cmp(list1,list2):比较list1和list2的大小,先比较两个列表第一个元素(ascii)的大小,第一个元素相同则比较第二个元素,以此类推,如果list1大,则返回1,list2大返回-1,两个list相同返回0
>>> cmp([1,23],[1,2,3])
1
>>>
>>> cmp(["Z",23],["a",2,3])
-1
>>> cmp([1,2,3],[1,2,3])
0
>>>
2.2.7统计列表中某一元素出现的次数(list.count(element))
list.count(element):返回list中指定元素出现的次数
>>> a=[1,2,2,3,2,3,4,5]
>>> a.count(2)
3
>>>
2.2.8确定元素索引位置(list.index(element))
list.index(element):返回指定元素在列表中第一次出现时的索引位置,如果元素不存在会报错:ValueError: 9 is not in list
>>> a=[1,2,2,3,2,3,4,5]
>>> a.index(2)
1
>>> a.index(9)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 9 is not in list
2.2.9列表排序(list.sort ();sorted(list))
list.sort (reverse=False):将原列表中元素升序排序
>>> a
[1, 2, 3, 2, 3, 4]
>>> a.sort()
>>> a
[1, 2, 2, 3, 3, 4]
>>>
sort方法,函数嵌套
>>> list1=[(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
>>> def L(seq):
... return len(seq)
...
>>> list1.sort(key=L,reverse=True)
>>> print list1
[(1, 1, 2, 4, 5, 6), (1, 3, 6, 3), (1, 5, 3), (1, 9)]
>>> print L(list1)
4
>>> list2=[(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
>>> list2.sort(key=L,reverse=False)
>>> print list2
[(1, 9), (1, 5, 3), (1, 3, 6, 3), (1, 1, 2, 4, 5, 6)]
>>> list2=[(1,1,3),(1,2,6,3),(1,3,3,4,5,6),(1,9)]
>>> list2.sort(key=L,reverse=True)
>>> print list2
[(1, 3, 3, 4, 5, 6), (1, 2, 6, 3), (1, 1, 3), (1, 9)]
>>> def K(seq):
... return seq[1]
...
>>> list2.sort(key=K,reverse=True) # 在sort函数里面执行时,会把list2中的元素遍历给K
>>> print list2
[(1, 9), (1, 3, 3, 4, 5, 6), (1, 2, 6, 3), (1, 1, 3)]
sorted(list):将列表升序排序之后生成一个新的list
>>> a=[4,3,5,2]
>>> sorted(a)
[2, 3, 4, 5]
>>> a
[4, 3, 5, 2]
>>>
2.2.10列表倒序排列(list.reverse())
list.reverse():将列表倒序排列
>>> a
[4, 3, 5, 2]
>>> a.reverse()
>>> a
[2, 5, 3, 4]
>>>
2.2.11列表去重(排序)(set(list))
set(list):将列表去重排序
>>> a=[3,3,4,2,2,5]
>>> set(a)
set([2, 3, 4, 5])
>>> list(set(a))
[2, 3, 4, 5]
>>>
2.2.12列表合并(zip(list1,list2))
zip(list1,list2):把list1和lsit2中索引位置相同的元素取出组合成一个元组,将组合成的所有元组存入一个list中,如果两个list中元素数量不一致,多余的元素会被自动剔除
>>> a=["a","b","c"]
>>> b=[1,2,3,4,5]
>>> zip(a,b)
[('a', 1), ('b', 2), ('c', 3)]
>>> a
['a', 'b', 'c']
>>> b
[1, 2, 3, 4, 5]
>>>
2.2.13将字符串转换为列表(string.split ())
string.split ():将字符串中元素去掉()中的内容并分割,生成一个列表
>>> a="i am a sunny big boy"
>>> a.split()
['i', 'am', 'a', 'sunny', 'big', 'boy']
>>> a
'i am a sunny big boy'
>>> a="i*am*a*sunny*big*boy"
>>> a.split("*")
['i', 'am', 'a', 'sunny', 'big', 'boy']
>>>
2.2.14将列表转换为字符串(“”.join(list))
“”.join(list):将列表中元素按照冒号中指定的符号链接,生成一个字符串
>>> a
['i', 'am', 'a', 'sunny', 'big', 'boy']
>>> "*".join(a)
'i*am*a*sunny*big*boy'
>>> a
['i', 'am', 'a', 'sunny', 'big', 'boy']
>>>
2.2.15切片操作sequence[a:b:c]
sequence[a:b:c]:可以对字符串、元组、列表等序列进行切片操作,其中a,b,c为三个非必填的参数,a表示操作的起始索引位置,b表示操作的终止索引位置,c代表步长;c的默认值为1
a=[0,1,2,3,4,5,6,7,8,9]
a[0]>>>0
a[0:3]>>>[0,1,2]
a[3:]>>>[3,4,5,6,7,8,9]
a[:3]>>>[0,1,2]
a[0:10:2]>>>[0,2,4,6,8]
a[::-1]>>>[9,8,7,6,5,4,3,2,1,0]
a[-1:]>>>[9]
a[:-1]>>>[0,1,2,3,4,5,6,7,8] #从第一个元素开始取值,取到倒数第一个元素,等价于a[0:-1]
a[-2:-8:-2] >>>[8, 6, 4] #从倒数第二个数8开始取值,取到倒数第八个数2,步长为-2(倒着每隔两个元素取一个)
a[-2:-8:2] >>>[]