首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何迭代/操作python中的类对象列表(分散网络模拟中的Node Crawl )

如何迭代/操作python中的类对象列表(分散网络模拟中的Node Crawl )
EN

Stack Overflow用户
提问于 2016-08-15 14:41:20
回答 1查看 62关注 0票数 1

有没有人能帮我做一个类对象列表的迭代?

我想在一个去中心化的网络中建立一个节点相互作用的模拟。每个节点都被创建为Node类中的一个对象。每个节点都有自己的名字和最多三个其他节点(也是sam类中的对象)的列表。

对于稍后的模拟,每个节点有三个列表是必要的。l1包含他连接到的所有节点l2包含来自l1的所有节点连接到l3包含来自l2的节点连接到的所有节点

我想动态创建l2和l3。我的想法是,因为每个节点都知道它直接连接到的节点,所以我只需要从每个节点获取l1。到目前为止,我已经做到了这一点(尽管我不喜欢现在创建l2的方式,因为它是静态的)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Node:

    def __init__(self,nid,ports):
        self.id=nid
        self.port1=ports[0]
        self.port2=ports[1]
        self.port3=ports[2]
        self.l1=[self.port1,self.port2,self.port3]
        self.l2=[]
        self.l3=[]

    def node_crawl(self):
        self.l2=self.port1.l1+self.port2.l1+self.port3.l1

    def show_node(self):
        print (" Node-id:   ", self.id)
        print (" Net-Setup","\n","Port 1:   ",self.port1,"\n","Port 2: ",self.port2,"\n","Port 3:   ",self.port3)

if __name__ == '__main__':


    node1=Node("node1",[node2,node3,node6])
    node2=Node("node2",[node1,node3,node5])
    node3=Node("node3",[node2,node4,node6])
    node4=Node("node4",[node3,node5,node6])
    node5=Node("node5",[node2,node4])
    node6=Node("node6",[node3,node4,node1])

    node1.node_crawl()

我想也许我可以写一个for循环来使用前面列表中的每个元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i in self.l1:
    self.l2.append(self.l1[i].l1)

但这并不管用。Python告诉我索引必须是整数或切片。任何建议都将不胜感激。稍后,我将不得不清理重复提到的节点的列表,任何关于这方面的建议也会很好。干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-15 15:19:31

好的,多亏了二战我找到了答案

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 for i in self.l1:        
        self.l2.extend(i.l1)

 for i in self.l2:        
        self.l3.extend(i.l1)

可以使用以下命令消除列表中出现重复的节点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from collections import OrderedDict as odict

self.l2=list(odict.fromkeys(self.l2))
self.l3=list(odict.fromkeys(self.l3))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38957286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文