Skip to main content
 首页 » 编程设计

python之如何遍历列表的索引

2025年04月02日32xing901022

例如,我正在尝试计算三个列表

M =[[3, 0, 2, -8, -8], [5, 3, 2, 2, 3], [2, 5, 2, 1, 4]]

我想先对列表中的每个第一个值求和 x=3+5+2

所有列表中的其余值将它们加在一起作为 y

最后 x-y 的绝对值差为 10 - 8

再次对列表中的前两个值求和 x=3+5+2+0+3+5

所有列表中的其余值将它们加在一起作为 y

最后 x-y 的绝对值差为 18 - 0

同样的过程直到列表中的最后一个值

最后如果difference是最小存储值,则将最小值设置为difference,将最小索引设置为index,最后返回取最小值找到的切片

对于此示例,找到的切片是 list1=[3,5,2] list2=[0,2,-8,-8,3,2,2,3,2,5,2,1, 4] 我手动计算了它,但我无法实现它

 def Vertical_UpperMatrix(M): 
        ds=range(5) 
        diffList = [(abs(sum(ds[:i]) - sum(ds[i:]))) for i in range(3)] 
        return diffList.index(min(diffList)) 
 M=[[3, 0, 2, -8, -8], [5, 3, 2, 2, 3], [2, 5, 2, 1, 4]] 

请您参考如下方法:

我在美国东部时间,所以在写这个答案的时候是凌晨 2 点 40 分。但我抽时间来回答,基本上是为了返回你愿意改进的意愿。

我们将使用一个名为 numpy 的库。如果你的机器上没有 numpy,请谷歌搜索如何在你的操作系统上安装它。这对您以后的职业生涯很重要,您会明白为什么。

首先,创建您的 numpy 数组:

>>> import numpy as np 
>>> l = np.array([[3, 0, 2, -8, -8], [5, 3, 2, 2, 3], [2, 5, 2, 1, 4]]) 
>>> l 
array([[ 3,  0,  2, -8, -8], 
       [ 5,  3,  2,  2,  3], 
       [ 2,  5,  2,  1,  4]]) 

现在您可以访问第一列

>>> l[:, 0] 
array([3, 5, 2]) 

第一行可以访问

>>> l[0, :] 
array([ 3,  0,  2, -8, -8]) 

第一行从第二个元素到第四个元素由

>>> l[0, 1:4] 
array([ 0,  2, -8]) 

基于以上所有特性,你想要的目标函数基本是这样的:

>>> d = 1 
>>> np.abs(np.sum(l[:, 0:d]) - np.sum(l[:, d:])) 
2 

d 是您的划分指数。现在您可以在 for 循环中迭代 d

如果您打算使用 Python 继续您的职业生涯,我建议您至少了解 numpyscipy