这是我的问题,
from Link import Link
def generateCompartibleLinks(linksList):
count =0
updatedList =[]
for i,item in enumerate(linksList):
link = linksList[i];
for j,item in enumerate(linksList):
if not linksList[i].sharesNode(linksList[j]):
link.addCompartibleLink(linksList[j])
updatedList.append(link)
print len(updatedList[i].compartibleLinks)
return updatedList
link1 = Link("a","b",5)
link2 =Link("b","c",1)
link3 = Link("d","b",3)
link4 =Link("d","c",2)
list1 = [link2,link1,link3,link4]
list1 = generateCompartibleLinks(list1)
for link in list1:
print str(len(link.compartibleLinks))+" : "+link.getLinkInfo()
我希望每个链接(link1,link2,link3,link4)都有一组不同的compartibleLinks,但是一旦对列表中的任何元素进行了更改,它就会反映在每个链接上,而不是我想要的是。 这是课程链接。
class Link(object):
sendNode =None
rcvNode =None
timesToSchedule =1
isScheduled = False
compartibleLinks = []
def __init__(self,sendNode,rcvNode,timesToschedule):
self.sendNode=sendNode
self.rcvNode = rcvNode
self.timesToSchedule =timesToschedule
def reduceTimeToSchedule(self):
self.timesToSchedule -=1
if self.timesToSchedule<=0:
self.timesToSchedule=0
def needsToschedule(self):
if self.timesToSchedule==0:
return False
else:
return True
def addCompartibleLink(self,link):
self.compartibleLinks.append(link)
def isCompartible(self,link):
return any(l == link for l in self.compartibleLinks);
#if the link is not found in the set.
return False;
def sharesNode(self,link):
return (self.sendNode==link.sendNode or self.rcvNode==link.rcvNode or self.rcvNode==link.sendNode or self.sendNode==link.rcvNode)
def getLinkInfo(self):
return 'sender: '+ self.sendNode+" , rec:"+self.rcvNode
我试图查看似乎与我的问题相关的各种解决方案,但没有什么对我有用。
答案 0 :(得分:-1)
如果我正确理解了您的要求,那么我建议您使用内置的map函数将函数应用于迭代(即您的列表)。当然,您必须修改generateCompatibleLinks函数以接受链接而不是整个列表。