python的基本数据结构之列表
Python的列表就像数组一样。
定义一个空列表:
a=[] a=list()
生成列表可以用列表推导式来生成一个列表:
ls1=[1,2,3,4] ls2=[x*x for x in lst1]# ls2=[1,4,9,16]
列表的一些方法:
定义一个列表ls
ls.append(x)
在列表尾部追加一个元素,等价于ls[len(ls):]=[x]
ls.extend(L)
用给入的列表将列表接长,等价于ls[len(ls):]=L
ls.insert(i,x)
在给定的位置i上插入项x,ls.insert(len(ls),x)等价 与ls.append(x)
ls.remove(x)
移除列表中第一个为x的项,若无符合的项,产生一个错误。
ls.pop([i])
删除列表给定位置的项,并返回它。ls.pop()返回的则是最后一项。
ls.index(x)
返回列表中第一个值为x的索引值,若没有符合的项,产生一个错误
ls.count(x)
返回列表中x出现的次数
ls.sort()
就地完成列表排序
ls.reverse()
就地完成列表的逆置
将列表当成栈来使用,组合使用append()与pop()方法。
ls.append(x)相当于进栈,ls.pop()相当于出栈。
那么,如何将列表当成队列来使用呢?
看一个例子(来自《The python tutorial》)
>>> from collections import deque >>> queue = deque(["Eric", "John", "Michael"]) >>> queue.append("Terry") # Terry 进入 >>> queue.append("Graham") # Graham 进入 >>> queue.popleft() # 第一个进入的现在离开 ‘Eric‘ >>> queue.popleft() # 第二个进入的现在离开 ‘John‘ >>> queue # 剩余的队列 ,它按照进入的顺序排列 deque([‘Michael‘, ‘Terry‘, ‘Graham‘])
网上看了下其他人用自己的方法来实现栈与队列的模拟:
class Stack(object) : 02 def __init__(self) : 03 self.stack = [] 04 05 def push(self, item) : 06 self.stack.append(item) 07 08 def pop(self) : 09 if self.stack != [] : 10 return self.stack.pop(-1) 11 else : 12 return None 13 14 def top(self) : 15 if self.stack != [] : 16 return self.stack[-1] 17 else : 18 return None 19 20 def length(self) : 21 return len(self.stack) 22 23 def isempty(self) : 24 return self.stack == [] 25 26 27 class Queue(object) : 28 def __init__(self) : 29 self.queue = [] 30 31 def enqueue(self, item) : 32 self.queue.append(item) 33 34 def dequeue(self) : 35 if self.queue != [] : 36 return self.queue.pop(0) 37 else : 38 return None 39 40 def head(self) : 41 if self.queue != [] : 42 return self.queue[0] 43 else : 44 return None 45 46 def tail(self) : 47 if self.queue != [] : 48 return self.queue[-1] 49 else : 50 return None 51 52 def length(self) : 53 return len(self.queue) 54 55 def isempty(self) : 56 return self.queue == []
原理是一样的,但是实现方法却会有很多个。
列表是可以嵌套的,这样就相当于多维数组了。
a=[
[1,2],
[2,3],
[3,4]
]
到这吧。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。