您的位置:首页 > 理论基础 > 数据结构算法

Python中使用list来模拟常见的数据结构

2013-07-20 16:12 555 查看
>>> #使用list来模拟堆栈stack
>>> a = [];
>>> a
[]
>>> a.append(0)
>>> a.append(1)
>>> a.append(2)
>>> a
[0, 1, 2]
>>> a.pop()
2
>>> a.pop()
1
>>> a
[0]
>>> #使用list来模拟队列queue
>>> a=[]
>>> a
[]
>>> a.insert(0,1)
>>> a.insert(0,2)
>>> a.insert(0,3)
>>> a
[3, 2, 1]
>>> a.pop()
1
>>> a.pop()
2
>>> a.pop()
3
>>> a
[]
>>>


>>> #或者可以使用如下方式进行模拟queue
>>> a
[]
>>> a.append(1)
>>> a.append(2)
>>> a.append(3)
>>> a.append(4)
>>> a.pop(0)
1
>>> a.pop(0)
2
>>> a.pop(0)
3
>>> a.pop(0)
4
>>> a
[]
>>>

>>> #使用list来模拟tree
>>> leaf1 = [0,1]
>>> leaf2 = [2,3]
>>> leaf3 = [4,5]
>>> leaf4 = [6.7]
>>> leaf4 = [6,7]
>>> branch1 = [leaf1,leaf2]
>>> branch2 = [leaf3,leaf4]
>>> root = [branch1,branch2]
>>> root
[[[0, 1], [2, 3]], [[4, 5], [6, 7]]]
>>>

>>> #list comprehension
>>> #语法: [<expr1> for k in L if <expr2>]
>>> #语义: returnList = []
>>> #      for k in L:
>>> #          if <expr2>:
>>> #		  returnList.append(<expr1>)
>>> # 	   return returnList
>>> #返回一个list,list的每个元素有每一个expr1组成,if语句用于过滤,可有可无
>>> a = ["123" , "456" , "abc" , "Abc" , "AAA"]
>>> [k.center(9) for k in a]
['   123   ', '   456   ', '   abc   ', '   Abc   ', '   AAA   ']
>>> #得到a中的仅有字母组成的字符串,并把他变成大写的
>>> [k.upper() for k in a if k.isalpha()]
['ABC', 'ABC', 'AAA']
>>> #得到a中仅有大写字母组成的字符串,并把他变成小写的
>>> [k.lower() for k in a if k.isupper()]
['aaa']
>>> #得到a中仅有数字构成的字符串,并把他变成整数类型
>>> [int(k) for k in a if k.isdigit()]
[123, 456]
>>> #尽管这个用法很简单,但是却是十分有用的,程序变得简洁,可读性强。很多时候,我们使用循环语句,仅仅做很简单的事情,但是循环语句本身是很不好读的,因为循环语句不符合自然语言中的习惯,例如:上面的例子中,有一个表示“把list中的每个字符串中的字符变成大写字符串”。但是如果表示使用循环语句就是:“创建一个空的list,对于list中的每一个元素,把这个字符串变成大写的,添加到新建的list中”。
>>> #例如:把list中的所有元素加1
>>> #[k+1 for k in list]
>>> #提取出list中所有整数变量
>>> #[k for k in list if type(k) == types.IntType]
>>> #把list中的所有整数元素增加一
>>> #[k+1 for k in list if type(k) == types.IntType]
>>>


!!!!学习自王纯业版的《Python学习笔记》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息