首页 > 代码库 > 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的基本数据结构之列表