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]

 ]

到这吧。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。