首页 > 代码库 > python的基本数据结构之列表
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 None13 14 def top(self) :15 if self.stack != [] :16 return self.stack[-1]17 else :18 return None19 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 None39 40 def head(self) :41 if self.queue != [] :42 return self.queue[0]43 else :44 return None45 46 def tail(self) :47 if self.queue != [] :48 return self.queue[-1]49 else :50 return None51 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]
]
到这吧。
python的基本数据结构之列表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。