Python:List (列表)
list 为Python内建类型,位于__builtin__模块中,元素类型可不同,元素可重复,以下通过实际操作来说明list的诸多功能,主要分为增、删、改、查
list帮助:在IDE中输入 help(list)可查看
Help on class list in module __builtin__: class list(object) | list() -> new empty list | list(iterable) -> new list initialized from iterable's items | | Methods defined here: | | __add__(...) | x.__add__(y) <==> x+y | | __contains__(...) | x.__contains__(y) <==> y in x | | __delitem__(...) | x.__delitem__(y) <==> del x[y] | | __delslice__(...) | x.__delslice__(i, j) <==> del x[i:j] | | Use of negative indices is not supported. | | __eq__(...) | x.__eq__(y) <==> x==y | | __ge__(...) | x.__ge__(y) <==> x>=y | | __getattribute__(...) | x.__getattribute__('name') <==> x.name | | __getitem__(...) | x.__getitem__(y) <==> x[y] | | __getslice__(...) | x.__getslice__(i, j) <==> x[i:j] | | Use of negative indices is not supported. | | __gt__(...) | x.__gt__(y) <==> x>y | | __iadd__(...) | x.__iadd__(y) <==> x+=y | | __imul__(...) | x.__imul__(y) <==> x*=y | | __init__(...) | x.__init__(...) initializes x; see help(type(x)) for signature | | __iter__(...) | x.__iter__() <==> iter(x) | | __le__(...) | x.__le__(y) <==> x<=y | | __len__(...) | x.__len__() <==> len(x) | | __lt__(...) | x.__lt__(y) <==> x x*n | | __ne__(...) | x.__ne__(y) <==> x!=y | | __repr__(...) | x.__repr__() <==> repr(x) | | __reversed__(...) | L.__reversed__() -- return a reverse iterator over the list | | __rmul__(...) | x.__rmul__(n) <==> n*x | | __setitem__(...) | x.__setitem__(i, y) <==> x[i]=y | | __setslice__(...) | x.__setslice__(i, j, y) <==> x[i:j]=y | | Use of negative indices is not supported. | | __sizeof__(...) | L.__sizeof__() -- size of L in memory, in bytes | | append(...) | L.append(object) -- append object to end | | count(...) | L.count(value) -> integer -- return number of occurrences of value | | extend(...) | L.extend(iterable) -- extend list by appending elements from the iterable | | index(...) | L.index(value, [start, [stop]]) -> integer -- return first index of value. | Raises ValueError if the value is not present. | | insert(...) | L.insert(index, object) -- insert object before index | | pop(...) | L.pop([index]) -> item -- remove and return item at index (default last). | Raises IndexError if list is empty or index is out of range. | | remove(...) | L.remove(value) -- remove first occurrence of value. | Raises ValueError if the value is not present. | | reverse(...) | L.reverse() -- reverse *IN PLACE* | | sort(...) | L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*; | cmp(x, y) -> -1, 0, 1 | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __hash__ = None | | __new__ = | T.__new__(S, ...) -> a new object with type S, a subtype of T
1)增
a.初始化
直接用 list1 = list()或者 list1 =[ ]构造一个空列表
list2=[1,2,3] , list3=list(list2) 两种方式构造非空列表
b.追加元素
list2.append(5) --> [1,2,3,5],追加单个元素
list2.extend(['a','b']) --> [1,2,3,5,'a','b'] 追加后面列表中所有元素
list2.insert(0,'begin') --> ['begin',1,2,3,5,'a','b'] 指定位置插入元素
2)删
list2.remove('a') --> ['begin',1,2,3,5,'b'] 删除列表中指定值,只删除第一次出现的指定值,若指定值不在列表中则抛出ValueError
list2.pop(1) --> ['begin',2,3,5,'b'] 删除指定索引处的值并返回,若列表为空或索引值超出范围则抛出IndexError,默认(无参情况下)删除最后一个元素并返回,利用list.pop()可实现栈操作
3)查
list2[0] --> 根据index查找元素 ,支持切片 ,如list[0:3] --> ['begin',2,3]
'begin' in / not in list2 --> 查看某元素是否在列表中,返回布尔值
list2.count('b') --> 返回某元素在列表中出现次数
4) 改
list[0]='end' --> 替换指定index索引处元素值
5) 其他操作
反转 ,list2.reverse() --> 将list2 元素顺序倒转
排序,list2.sort() --> 将list2 元素进行升序排序,或者用sorted(list2)进行排序
实例:
1、用list实现栈
栈原则,先进后出FILO。
1 #! /usr/bin/env python 2 # -*-coding:utf-8-*- 3 4 class Stack(object): 5 6 def __init__(self): 7 self.st = list() 8 9 def in_stack(self,x): 10 self.st.append(x) 11 print 'element %s add to stack...'% x 12 13 def out_stack(self): 14 print 'element get out of stack...' 15 print self.st.pop() 16 17 def get_top(self): 18 print self.st[len(st)-1] 19 20 def get_info(self): 21 return 'stack is :',self.st,' depth: ',len(self.st) 22 if __name__=='__main__': 23 ST = Stack() 24 ST.in_stack('a') 25 ST.in_stack('b') 26 ST.in_stack('c') 27 ST.in_stack('d') 28 ST.in_stack('e') 29 print 'original stack: ',ST.get_info() 30 ST.out_stack() 31 ST.out_stack() 32 print 'stack now is: ',ST.get_info()