Python中的图
来源:互联网 发布:英雄杀最新探宝数据 编辑:程序博客网 时间:2024/06/06 10:50
>>> def searchGraph(graph,start,end): #搜索树
results=[] # 路径裂变
generatePath(graph,[start],end,results) #生成路径
results.sort(lambda x,y:cmp(len(x),len(y))) #按路径长短排序
return results
>>> def generatePath(graph,path,end,results): #生成路径
state=path[-1]
if state==end:
results.append(path)
else:
for arc in graph[state]:
if arc not in path:
generatePath(graph,path+[arc],end,results)
if __name__=='__main__':
Graph={'A':['B','C','D'],'B':['E'],'C':['D','F'],'D':['B','E','G'],'E':[],'F':['D','G'],'G':['E']} #构建树
r=searchGraph(Graph,'A','D')
print '******************************'
print ' path A to D '
print '******************************'
for i in r:
print i
r=searchGraph(Graph,'C','E')
print '******************************'
print ' path C to E '
print '******************************'
for i in r:
print i
******************************
path A to D
******************************
['A', 'D']
['A', 'C', 'D']
['A', 'C', 'F', 'D']
******************************
path C to E
******************************
['C', 'D', 'E']
['C', 'D', 'B', 'E']
['C', 'D', 'G', 'E']
['C', 'F', 'D', 'E']
['C', 'F', 'G', 'E']
['C', 'F', 'D', 'B', 'E']
['C', 'F', 'D', 'G', 'E']
《注》cmp( x, y) 比较2个对象,前者小于后者返回-1,相等则返回0,大于后者返回1.
lambda是在python中使用lambda来创建匿名函数,而用def创建的方法是有名称的,除了从表面上的方法名不一样外,python lambda还有哪些和def不一样呢?
1 python lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量。
2 python lambda它只是一个表达式,而def则是一个语句。
下面是python lambda的格式,看起来好精简阿。
lambda x: print x
如果你在python 列表解析里用到python lambda,我感觉意义不是很大,因为python lambda它会创建一个函数对象,但马上又给丢弃了,因为你没有使用它的返回值,即那个函数对象。也正是由于lambda只是一个表达式,它可以直接作为python 列表或python 字典的成员,比如:
info = [lamba a: a**3, lambda b: b**3]
在这个地方没有办法用def语句直接代替。因为def是语句,不是表达式不能嵌套在里面,lambda表达式在“:”后只能有一个表达式。也就是说,在def中,用return可以返回的也可以放在lambda后面,不能用return返回的也不能定义在python lambda后面。因此,像if或for或print这种语句就不能用于lambda中,lambda一般只用来定义简单的函数。
下面举几个python lambda的例子吧
1单个参数的:
g = lambda x:x*2
print g(3)
结果是6
2多个参数的:
m = lambda x,y,z: (x-y)*z
print m(3,1,2)
结果是4
- Python中的图
- Python 中的@
- Python中的...
- 【python】Python中的self
- python -- python中的遍历
- 【python】python中的数据类型
- 【Python】Python中的None
- 【Python】Python中的注解“@”
- [Python]Python函数参数中的*,**
- 浅析Python中的Python全局变量
- 浅析Python中的Python全局变量
- 浅析Python中的Python全局变量
- 【python】python参数中的星号*, **
- 浅析Python中的Python全局变量
- 浅析Python中的Python全局变量
- 初学python--python中的self
- 【python】Python中的logging模块
- Python:python中的随机数函数
- Head Fisrt Android Development读书笔记(3)When things take time
- flex 的mx:DataGrid 的itemDoubleClick 和 DoubleClick
- Hadoop 异常处理
- 在main函数执行之前和执行之后执行的方法
- 未能恢复-无效的自变量“的解决方法 (GUID分区)LION
- Python中的图
- Struts2 <s:iterator> 标签实现 for 循环式 循环控制
- 又见一帘幽梦
- mysql时间处理函数
- Spring读取加密属性文件处理
- Linux C++ 字符串 编码识别、编码转换
- 如何oracle修改字段类型
- java内存空间详解
- 系统集成项目管理工程师笔记(17)信息系统安全管理(18) 项目风险管理(19)项目收尾管理