在下面的函数中,我尝试模拟一个类似于广泛搜索的函数
第一个函数'Hello'通过给定和搜索name=V,应该为您提供列表中的所有元组伙伴
第二个函数应该有两个列表,第一个是已经访问过的列表,第二个是仍然在列表中的列表,即que
使用两个for循环,我按照中给出的单词遍历了新生成的列表,这样我就可以使用这些单词生成更多的元组伙伴,它们不在besucht
列表中。使用完成后,该项将从“列表”中删除并附加到besucht
问题:它没有按照我的预期工作,我不明白为什么
V = {'CGN', 'FRA','KEL','MUC','PAD','SFX','STR','TXL'}
E = {('SFX','TXL'),('FRA','CGN'),('FRA','MUC'),('FRA','STR'),('CGN','FRA'),('STR','FRA'),('TXL','SFX'),('CGN','PAD'),('PAD','KEL'),('MUC','KEL'),('KEL','STR') }
S = {('A','B'),('A','B')}
def Hallo(V,E):
Total = []
Que = []
for i in E:
for j in i:
if j == V:
Total.append(i)
for i in Total:
for a in i:
if a != V:
if a not in Que:
Que.append(a)
return Que
def Durchsuchen(V,E):
besucht = []
Liste = []
Liste.append(Hallo(V,E))
besucht.append(V)
while len(Liste) !=0
for i in Liste:
if i not in besucht:
besucht.append(i)
Liste.remove(i)
Liste.append(Hallo(i,E))
print Liste
print besucht
print Durchsuchen('FRA',E)
应该做什么?它应该给你所有的可能性,即如果你给出“FRA”,它将生成[MUC、STR、CGN],因为MUC等在这个列表中,这也应该给你KEL例如。也就是说,所有可能的选择都存在
您的问题是在循环中的列表上使用remove(),该循环在列表中进行迭代,这是不应该做的。这会更改循环所依赖的逻辑,并导致意外结果
第一个函数工作得很好,所以我建议您在第一个单词“FRA”上使用一次,然后在与之匹配的每个单词上使用它-[MUC,STR,CGN]在您的示例中。然后在您得到的列表上使用以下代码:
相关问题 更多 >
编程相关推荐