list的下标和子list
list的下表从零开始,和C语言挺类似的,但是增加了负下标的使用。
-len-----第一个元素
...... ......
-2 ------ 倒数第二个元素
-1 ------ 最后一个元素
0 ------ 第一个元素
len-1 ------ 最后一个元素
>>> a=[0,1,2,3,4,5,6,7] >>> a [0, 1, 2, 3, 4, 5, 6, 7] >>> i = -len(a) >>> i -8 >>> while i < len(a): print "a[",i,"]=",a[i] SyntaxError: invalid syntax >>> while i < len(a): "a[" , i , "]=" , a[i] i += 1 ('a[', -8, ']=', 0) ('a[', -7, ']=', 1) ('a[', -6, ']=', 2) ('a[', -5, ']=', 3) ('a[', -4, ']=', 4) ('a[', -3, ']=', 5) ('a[', -2, ']=', 6) ('a[', -1, ']=', 7) ('a[', 0, ']=', 0) ('a[', 1, ']=', 1) ('a[', 2, ']=', 2) ('a[', 3, ']=', 3) ('a[', 4, ']=', 4) ('a[', 5, ']=', 5) ('a[', 6, ']=', 6) ('a[', 7, ']=', 7)
子list的提取:
可通过下标指定范围,用于提取出一个list的一部分。下标表明位置,一个是起始位置,一个是结束位置,中间使用冒号分割,如果不指定起始位置,则默认从0开始,如果不指定结束位置,结束位置为-1,子list表示包括起始位置处的元素,一直到结束位置,单数不包括结束位置的元素。负下标也可以参与下标的表示:
>>> a [0, 1, 2, 3, 4, 5, 6, 7] >>> b = a[1:4] >>> b [1, 2, 3] >>> b = a[1:-1] >>> b [1, 2, 3, 4, 5, 6] >>> b = a[1:] >>> b [1, 2, 3, 4, 5, 6, 7] >>> b = a[:] >>> b [0, 1, 2, 3, 4, 5, 6, 7] >>>
改变新的子list的值,不会改变原来list的值
处理list的方法:
>>> #list.append(n),追加元素 >>> a [0, 1, 2, 3, 4, 5, 6, 7] >>> a.append(6) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 6]
>>> #list.count(var) , 计算var在list中出现的次数 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 6] >>> a.count(6) 2 >>>
>>> #len(list) , 返回list的长度 >>> len(a) 9 >>> #list.extend(list1) , 将list1追加到list的后面 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 6] >>> b = [a,c,d,f,g] Traceback (most recent call last): File "<pyshell#55>", line 1, in <module> b = [a,c,d,f,g] NameError: name 'c' is not defined >>> b = ['a' , 'b' , 'c' , 'd'] >>> b ['a', 'b', 'c', 'd'] >>> a [0, 1, 2, 3, 4, 5, 6, 7, 6] >>> a.extend(b) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 6, 'a', 'b', 'c', 'd'] >>> a.append(b) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 6, 'a', 'b', 'c', 'd', ['a', 'b', 'c', 'd']] >>>
>>> #list.index(var) , 返回var在list中的位置,若无,则抛出异常 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 6, 'a', 'b', 'c', 'd', ['a', 'b', 'c', 'd']] >>> a.index('x') Traceback (most recent call last): File "<pyshell#67>", line 1, in <module> a.index('x') ValueError: 'x' is not in list >>> a.index(4) 4 >>> a.index(6) 6 >>>
>>> #list.insert(index,var) , 在index出插入var,其余元素向后推,如果index大于list的长度,就会在后面添加。如果index小于0,就要在最开始出添加 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 6, 'a', 'b', 'c', 'd', ['a', 'b', 'c', 'd']] >>> a.insert(0,1) >>> a [1, 0, 1, 2, 3, 4, 5, 6, 7, 6, 'a', 'b', 'c', 'd', ['a', 'b', 'c', 'd']] >>> a.insert(100,100) >>> a [1, 0, 1, 2, 3, 4, 5, 6, 7, 6, 'a', 'b', 'c', 'd', ['a', 'b', 'c', 'd'], 100] >>>
>>> #list.pop() , 返回最后一个元素,并且删除最后一个元素。list.pop(index) , 返回index处的元素,并且删除该元素。 >>> a [1, 0, 1, 2, 3, 4, 5, 6, 7, 6, 'a', 'b', 'c', 'd', ['a', 'b', 'c', 'd'], 100] >>> a.pop() 100 >>> a [1, 0, 1, 2, 3, 4, 5, 6, 7, 6, 'a', 'b', 'c', 'd', ['a', 'b', 'c', 'd']] >>> a.pop() ['a', 'b', 'c', 'd'] >>> a [1, 0, 1, 2, 3, 4, 5, 6, 7, 6, 'a', 'b', 'c', 'd'] >>> a.pop(0) 1 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 6, 'a', 'b', 'c', 'd'] >>>
>>> #list.remove(var) , 找到var并且删除它,若无,则抛出异常 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 6, 'a', 'b', 'c', 'd'] >>> a.remove(9) Traceback (most recent call last): File "<pyshell#98>", line 1, in <module> a.remove(9) ValueError: list.remove(x): x not in list >>> a.remove(6) >>> a [0, 1, 2, 3, 4, 5, 7, 6, 'a', 'b', 'c', 'd'] >>> #list.reverse() , 将list倒序 >>> a [0, 1, 2, 3, 4, 5, 7, 6, 'a', 'b', 'c', 'd'] >>> a.reverse() >>> a ['d', 'c', 'b', 'a', 6, 7, 5, 4, 3, 2, 1, 0] >>> #list.sort() , 将list进行排序,a中元素若类型不同,结果自己看看一下,但是一般不会这么做 >>> a ['d', 'c', 'b', 'a', 6, 7, 5, 4, 3, 2, 1, 0] >>> a.sort() Traceback (most recent call last): File "<pyshell#107>", line 1, in <module> a.sort() TypeError: unorderable types: int() < str() >>> a = [1,3,2,4,5,6,3,2,1] >>> a [1, 3, 2, 4, 5, 6, 3, 2, 1] >>> a.sort() >>> a [1, 1, 2, 2, 3, 3, 4, 5, 6] >>>