python - 为什么我通过按原样传递字符串而不是等于函数中的字符串的变量从函数中获得不同的输出?
问题描述
我在这里遇到了这个问题:
def findPaths(neighborDict, start, end, prev=0, path=[],distance = 0):
path = path + [start]
if not prev == 0:
for i in neighborDict[start]:
if i[0] is prev:
distance = distance + i[1]
if start == end:
path.append(distance)
return [path]
paths = []
for node in neighborDict[start]:
if node[0] not in path:
newpaths = findPaths(neighborDict, node[0], end, start, path,distance)
for i in newpaths:
paths.append(i)
return paths
此代码用于查找加权图中的所有路径。这里的neighborDict 存储了所有的节点。
我用一些节点填充了neighborDict。然后我使用 itertools 创建一系列两个随机节点
neighborDict = {'1': [('3', 32), ('2', 8)], '2': [('1', 8), ('3', 2), ('4', 4)], '3': [('1', 32), ('2', 2), ('4', 16)], '4': [('5', 1), ('3', 16), ('2', 4)], '5': [('4', 1)]}
for i in range(numCities):
perms.append(str(i+1))
combs =[x for x in itertools.combinations(perms,2)]
现在,我通过说得到不同的输出,
findPaths(neighborDict,combs[0][1],combs[0][0])
对比
findPaths(neighborDict,'2','1')
在这里,combs[0][1] = '2' 和 combs[0][0] = '1'。因此,它们应该给出相同的输出。
输出 1 是:- [['2', '1', 0], ['2', '3', '1', 32], ['2', '4', '3', '1' , 48]] 输出 2 是:- [['2', '1', 8], ['2', '3', '1', 34], ['2', '4', '3' , '1', 52]]
解决方案
推荐阅读
- configuration - Microsoft Edge,打开 Sharepoint O365 时始终提示 Saveral 用户的凭据
- for-loop - 如何在 Arduino C 程序中退出或中断“for 循环”
- c - for 循环中的变量是否跟踪前一个数字?
- php - 如何在 Laravel 中使用包?
- microsoft-graph-api - 图形 API - 错误验证
- react-native - 如何在 react native android app 中添加 admob 的“App Open Ads”?
- sql - 如何在 SQL 数据库中标记和存储日志描述
- driver - TraceView 能够捕获驱动程序安装期间发生的日志,但显示为未知
- android - 通过持久存储重新安装 react-native 检查
- swift - 如何上传文件多部分alamofire swift5?