【发布时间】:2021-04-19 13:25:23
【问题描述】:
def update_basis(A, basis, i, j):
for k, var in enumerate(basis):
idx = int(var[1:])
if A[i][j] == 1:
basis[k] = "x" + str(j+1)
break
return basis
我写了上面的代码,但我收到了错误。在阅读了此处的答案之一后,我什至尝试了 range(enumerate(basis))。这似乎也不起作用。我该如何解决这个问题? PS。我从 - https://github.com/pyaf/operations-research/blob/master/simplex-method/utils.py 获取了这段代码 我知道这方面有很多类似的问题,但我就是找不到一个能回答我的问题。
Full traceback error:
TypeError Traceback (most recent call last)
<ipython-input-7-9809e74f4f64> in <module>
120 print("\nIteration number : %d" % iter_num)
121 #updating basis as variables enter and leave
--> 122 basis= update_basis(i,j,basis,nonbasic)
123 #updating table
124 A,b,c= row_operations(A,b,c,i,j)
<ipython-input-7-9809e74f4f64> in update_basis(A, basis, i, j)
76
77 def update_basis(A, basis, i, j):
---> 78 for k, var in enumerate(basis):
79 idx = int(var[1:])
80 if A[i][j] == 1:
TypeError: 'int' object is not iterable
【问题讨论】:
-
enumerate(range(basis))也许? -
请将您的代码edit 扩展为minimal reproducible example,并包含完整的回溯。
-
您将
int作为basis传递,并且代码需要可迭代的东西。您需要查看使用此功能的位置。 -
var和idx的意义何在?它们似乎未用于计算结果。 -
请添加您遇到的错误的完整回溯。