在【python 标准库】中看到的一段代码,非常有帮助:def all_nodes(self):

yield self

n = self.other

while n and n.name != self.name:

yield n

n = n.other

if n is self:

yield n

return

首尾的2处yield均只返回一次,作为循环图的起点、终点,而n作为图可能的节点,每次在next调用中均返回next节点

利用这个迭代器,就可以轻松打印出图的结构:

def __str__(self):

return '->'.join((n.name for n in self.all_nodes()))

Graph:

one->two->three->one

实现一个图结构需要利用python里面的弱引用,

我们先看一下标准的向图结构中增加下一节点的代码:

def set_next(self, other):

print '%s.next %r' % ( self.name, other)

self.other = other

这样绑定后,在属性字段中,增加一个对于下一节点的引用

c.__dict__

{'other': , 'name': '1'}

电脑技术002pc网对《python雪峰python 图 自身遍历及弱引用使用》总结来说,为我们python基础很实用。

所以,即使手动调用了 a = None, b = None, c = None,对象也不会被删除

Garbage:[,

,

,

{'name': 'one', 'other': },

{'name': 'two', 'other': },

{'name': 'three', 'other': }]

而弱引用是指“引用一个对象,但并不增加被引用对象的指针计数”

可以通过c = weekref.ref(k,func)

来指定引用的对象及对象删除后的动作func

调用时,使用c() 来引用k

但是在上个例子里面,我们需要一个“代理对象”来代理这个被引用的对象,从而使set_next 函数对于变量other可以同正常变量一样使用def set_next(self, other):

if other is not None:

if self in other.all_nodes():

other = weakref.proxy(other)

super(WeakGraph, self).set_next(other)

return

从而避免了通过other()来引用一个other对象~

更多:python雪峰python 图 自身遍历及弱引用使用

https://www.002pc.comhttps://www.002pc.com/python/2159.html

你可能感兴趣的python,及弱,遍历,引用,自身,使用

No alive nodes found in your cluster

0踩

0 赞

python雪峰_python雪峰python 图 自身遍历及弱引用使用相关推荐

  1. python字典弱引用_python 自身遍历及弱引用的简单示例

    对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! 在[python 标准库]中看到的一段代码,非常有帮助: # @param python 图 自身 ...

  2. python作品_Python爬取图虫网摄影作品

    准备 要爬的网站是图虫网 工具:python 2.7,BeautifulSoup4 注意:BeautifulSoup4为第三方类库,如果在cmd下用pip安装报错,可直接去官网下载,解压后拷贝到pyt ...

  3. 如何在电脑上下载python中文版_Python下载-Python中文版官方下载

    Python是一款通用型的计算机程序设计语言,Python对编程人员来说是一款非常有利的工具,可以让您快速编写代码,而且代码运行速度非常快.Python具有非常简捷而清晰的语法特点,适合完成各种高层任 ...

  4. python深度优先_python数据结构之图深度优先和广度优先实例详解

    本文实例讲述了python数据结构之图深度优先和广度优先用法.分享给大家供大家参考.具体如下: 首先有一个概念:回溯 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到 ...

  5. python吧_Python | 初识Python程序设计

    我们先来看一个情景: 小烁和小慈周末骑共享单车出行游玩.假设某品牌共享单车计费方式如下:如果行程不超过10公里的,收取2元:如果超过10公里,那么超出的部分,按照0.5元每公里计费.小烁想设计一款小软 ...

  6. python小屋_Python小屋——Python语言基础(三)

    数字类型Python语言提供整数.浮点型.复数3种数字类型 整数整数类型与数学中整数的概念一致 整数类型共有4种进制表示:十进制.二进制.八进制.十六进制.整数采用十进制,其他进制需要添加引导符号 如 ...

  7. python小屋_Python小屋——Python语言基础(一)

    昨天跟大家介绍了python常用的两个开发工具,IDLE和PyCharm .从今天开始我们将从基础出发,跟大家一起探秘Python语言的魅力与美丽. 首先我们来看一段Python代码# -*- cod ...

  8. python 遍历_python实现图广度优先遍历、深度优先遍历

    一.广度优先遍历-BFS 顾名思义,BFS总是先访问完同一层的结点,然后才继续访问下一层结点,它最有用的性质是可以遍历一次就生成中心结点到所遍历结点的最短路径,这一点在求无权图的最短路径时非常有用.广 ...

  9. python商业爬虫教程_廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程...

    廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程 1.JPG (53.51 KB, 下载次数: 1) 2019-8-9 08:15 上传 2.JPG ...

最新文章

  1. 初学Java ssh之Spring 第一篇
  2. mysql gid_mysql主从复制5.6基于GID及多线程的复制笔记
  3. CCPC秦皇岛gym102361A. Angle Beats
  4. 看了通信领域中信息的处理的三种方式我终于知道电报能发送信息的原理了
  5. Hibernate之表间关系
  6. 文本分类(下) | 卷积神经网络(CNN)在文本分类上的应用
  7. 基于注解方式@AspectJ的AOP
  8. 设置时区,时间,日期的脚本
  9. git 客户端_适用于Mac的10个最佳GUI Git客户端
  10. centos 6.8 配置csh的shell和环境变量
  11. c语言调用树莓派usb摄像头,树莓派接多个USB摄像头,使用opencv打开指定的某一个摄像头...
  12. matlab图像取反_matlab图像处理
  13. 使用instrument-->Allocations进行内存分析
  14. 教程:如何制作一个多功能U盘
  15. Java 最常见的 100+ 面试题:金三银四必备
  16. windows系统redis部署配置(IP端口服务)配置
  17. linux系统 详细解析 cpu 信息
  18. 蓝墨云功能扩展之试卷导出WORD文档
  19. Jump gameII
  20. SpringSecurity安全框架简介

热门文章

  1. mysql connect_retry_master-connect-retry的作用
  2. python笑脸识别_OpenCV检测篇(二)——笑脸检测
  3. 合泰单片机入门——IO口操作
  4. 我以为一维数组就已经天下无敌了,没想到二维数组比他还勇猛,这是谁的部将!?
  5. 详解字符串处理函数(复制、连接、比较、字符串长度函数)
  6. 读丘成桐自传《我的几何人生》
  7. Emlog小程序-Brief3.0
  8. xlwings : 从此可以 VBA 调用 Python 代码啦
  9. 浏览器调试工具精讲 Chrome Dev Tools精讲,前端必看!
  10. fdisk和parted命令区别