我正在get_connected_components为一个类写一个函数Graph:
def get_connected_components(self):
path=[]
for i in self.graph.keys():
q=self.graph[i]
while q:
print(q)
v=q.pop(0)
if not v in path:
path=path+[v]
return path
Run Code Online (Sandbox Code Playgroud)
我的图是:
{0: [(0, 1), (0, 2), (0, 3)], 1: [], 2: [(2, 1)], 3: [(3, 4), (3, 5)], \
4: [(4, 3), (4, 5)], 5: [(5, 3), (5, 4), (5, 7)], 6: [(6, 8)], 7: [], \
8: [(8, 9)], 9: []}
Run Code Online (Sandbox Code Playgroud)
其中键是节点,值是边缘.我的函数给了我这个连接组件:
[(0, 1), (0, 2), (0, 3), (2, 1), (3, 4), (3, 5), …Run Code Online (Sandbox Code Playgroud) 我会添加方法class动态...函数名称也将动态传递.
我能怎么做?我试过这种方式
def decor(*var):
def onDecorator(aClass):
class onInstance:
def __init__(self,*args,**kargs):
setter=var
aClass.setter = self.flam
self.wrapped = aClass(*args,**kargs)
def __getattr__(self,attr):
return getattr(self.wrapped,attr)
def __setattr__(self,attr,value):
if attr == 'wrapped':
self.__dict__[attr]=value
else:
setattr(self.wrapped,attr,value)
def flam(self,*args):
self.__setattr__('dimension',len(args[0]))
return onInstance
return onDecorator
Run Code Online (Sandbox Code Playgroud)
但如果我这样做:
print(aClass.__dict__)
Run Code Online (Sandbox Code Playgroud)
我有
'setter': <bound method onInstance.flam of <__main__.onInstance object at 0x522270>>
Run Code Online (Sandbox Code Playgroud)
而不是var:.....
我有这堂课:
class D:
def __init__(self, data):
self.data = data
self.dimension = len(self.data)
Run Code Online (Sandbox Code Playgroud)
我打电话给:
D.name()
Run Code Online (Sandbox Code Playgroud)
并且已经回来self.dimension但我name事先并不知道
我有一份国家名单,我希望拥有最长的国家道路,每个国家的选择必须以结束前一个元素的相同字母开头
nations = ['albania','andorra','austria','belarus','belgium','bosnia and herzegovina',
'bulgaria','croatia','czech republic','denmark','estonia',
'finland','france','germany','greece','hungary',
'iceland','ireland','italy','latvia','liechtenstein','lithuania','luxembourg',
'macedonia','malta','moldova','monaco','montenegro','netherlands',
'norway','poland','portugal','romania','russia',
'san marino','serbia','slovakia','slovenia','spain','sweden', 'switzerland',
'ukraine','united kingdom','vatican city']
chain('spain')
>>>['spain', 'netherlands', 'slovenia', 'andorra', 'austria', 'albania']
Run Code Online (Sandbox Code Playgroud)
我试过这种方式,但它不起作用
def chain(naz):
initial = naz[-1]
initials=[]
res = set()
res.add(naz)
for i in nations:
if i.startswith(initial):
initials.append(i)
for j in initials:
nations.remove(j)
res.add(j)
chain(j)
return res
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
当我使用时,我想知道Python调用了什么=:
a = b
Run Code Online (Sandbox Code Playgroud)
我在哪里查找这些信息?
我会用my ="赋值给变量"
a会有类似的行为
l=list()
l.append(1)
l.append(2)
l.append(3)
l1=l
l1[2] = ’B’
print(l1)
[1, 2, ’B’]
print(l)
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud) 我会孤立一个元组的最后一个元素
a = (3,5,5)
last = a[-1]
Run Code Online (Sandbox Code Playgroud)
但问题是我有一个像这样的pice ok代码
if var == last:
do something
Run Code Online (Sandbox Code Playgroud)
它需要第一个5而不是第二个,我怎么能采取最后一个?
我重新实现了python中的set但是我遇到了多个交集的问题....我遵循了学习Python这本书,但我的代码有问题
class Set:
def __init__(self,value=[]):
self.data = []
self.remDupli(value)
def remDupli(self,val):
for i in val:
if i not in self.data:
self.data.append(i)
def intersect(self,other):
val=[]
for i in self.data:
for k in other:
if i == k:
val.append(i)
return Set(val)
def union(self,other):
val=self.data
for i in other:
if i not in self.data:
val.append(i)
return Set(val)
def __or__(self,a): return self.union(a)
def __and__(self,a): return self.intersect(a)
def __len__(self): return len(self.data)
def __getitem__(self,key): return self.data[key]
def __repr__(self): return 'Set: ' +repr(self.data)
class Extend(Set):
def intersect(self, …Run Code Online (Sandbox Code Playgroud) python ×6
methods ×2
decorator ×1
intersection ×1
longest-path ×1
operators ×1
redefine ×1
set ×1
tuples ×1