append() 方法在 python 中的列表的所有元素上循环

问题描述

我正在使用 namedtuples 对象来创建节点和图来表示网络。目标是将主网络(称为网络)的资源分配给较小的网络(称为请求)。

一个请求的所有节点都关联到一个网络节点并且请求的“形状”被保留时,一个请求被认为已经完成,如下图所示。请求以红色表示

Example of fulfilled request

节点项目构建如下: Node = namedtuple('Node','name val alloc',defaults=[[]])

图表项目构建如下: Graph = namedtuple('Graph','nodes edge',defaults=[[],[]])

这里是网络和来自图像的请求,用 Python 构建

a = Node('a',10)
b = Node('b',6)
c = Node('c',5)
    
Vnode = namedtuple('Vnode','name val')
    
x1 = Vnode('x1',3)
y1 = Vnode('y1',4)

Graph = namedtuple('Graph','nodes edges',[]])

vne = Graph([a,b,c])

我试图隔离不能按预期工作的代码,这里是:

def allocate(node,node_vnf,visited,visited_vnf,to_visit,to_visit_vnf):

    # node_vnf = node to place;
    # to_visit = network nodes that haven't been visited;
    # to_visit_vnf : request nodes that haven't been visited

    if node_vnf.val <= node.val and node_vnf not in visited_vnf and node not in visited:  # Are there enough resources free on the node ?
        
        node.alloc.append(node_vnf) # We had the request node to the network node attribute alloc
        
        node = node._replace(val=(node.val-node_vnf.val)) # change the value of network node 
        visited_vnf.append(node_vnf)
        visited.append(node)

        return node
    else:
        return node

在上面的函数中,append()应用于node.alloc,Node对象节点的属性alloc,在网络的所有节点上循环,而不是仅仅在node.alloc末尾添加node_vnf。

有人知道为什么 append() 方法可以按预期工作吗?我也试过使用 insert(),但效果一样。

如果有关该主题的任何信息缺失或不清楚,请告诉我。

预先感谢您的帮助:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...