我怎样才能遍历列表的索引?

时间:2016-03-12 06:56:04

标签: python

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

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

我想首先对列表x=3+5+2

中的每个第一个值求和

并且所有列表中的其余值将它们一起添加为y

最后是difference of absolute value of x-y which is 10 - 8

并再次对列表x=3+5+2+0+3+5

中的前两个值求和

并且所有列表中的其余值将它们一起添加为y

最后是difference of absolute value of x-y which is 18 - 0

再次执行相同的过程,直到列表中的最后一个值

最后如果差异是最小存储值,则将最小值设置为差值,将最小索引设置为索引,最后通过获取最小值返回找到的切片

对于此示例,找到的切片是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]]

1 个答案:

答案 0 :(得分:1)

我在EST时区,所以在写这个答案时,它是凌晨2:40。但我花时间回答,基本上是为了回报你的改善意愿。

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

首先,创建您的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

如果您打算使用numpy继续职业,我建议您至少了解scipyPython