我有一个初始化的列表:
[[ 0 1308 17410 16098]
[ 1246 0 17557 16244]
[17675 18002 0 5618]
[16257 16584 5508 0]]
作为矩阵的finalList如下所示:
[[ 0 1308 17410 16098]
[ 1246 0 17557 16244]
--> [17675 18002 0 5618]
[16257 16584 5508 0]]
我要做的是迭代best_selected的每个列表并根据它在另一个列表中的索引添加它们。并且让我们说在第一次迭代中是best_selected列表中的[2,3,0,1]。列表中的第一个元素是2,所以我将开始:
[[ 0 1308 17410 16098]
[ 1246 0 17557 16244]
[17675 18002 0 5618]
--> [16257 16584 5508 0]]
由于在best_selected的第一次迭代中,下一个2的数量分别为3,所以我将得到5618作为索引中的第一个值。由于它在3点停止,我现在将在下一步检查:
count = len(best_selected)
index = 0
j = 0
val = best_selected[0]
while count != 0:
index = index + finalList[best_selected[val]]
if counter == 1:
pass
else:
val = best_selected[j+1]
j = j + 1
counter = counter - 1
print(index)
由于3的下一个元素是0 *,然后我会尝试在包含值5618的变量'index'中添加16257,因此索引现在将包含值16257 + 5618.我正在尝试做在best_selected的每次迭代中,到目前为止我都有错误
我正在努力解决的代码:
I_AM_WONDERING_ABOUT_THE_MAXIMUM_LENGTH_OF_THIS_STRING_RIGHT_HERE=this-is-some-really-helpful-html-file.html
非常感谢任何修复或简单的解决方案!
答案 0 :(得分:0)
如果我理解正确,您需要当前项目的滑动窗口以及子列表中的下一个项目。您可以遍历子列表,然后遍历范围range(len(sublist)-1)
,以便您可以将第一个索引分配给i = sublist[indx]
,将第二个索引分配给j = sublist[indx+1]
。
index = 0
for sublist in best_selected:
for indx in range(len(sublist)-1):
i = sublist[indx]
j = sublist[indx+1]
index += finalList[i][j]
更好的变体是zip
子列表sublist[1:]
来获取带有索引的元组,你可以立即在循环的头部解压缩:
for sublist in best_selected:
for i, j in zip(sublist, sublist[1:]):
index += finalList[i][j]
以下是具有单独子列表总和的解决方案:
sums = []
for sublist in best_selected:
sublist_sum = 0
for i, j in zip(sublist, sublist[1:]):
sublist_sum += finalList[i][j]
sums.append(sublist_sum)
print(sums)
print(sum(sums))