Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 索引一个数组并对另一个数组执行操作_Arrays_Python 3.x - Fatal编程技术网

Arrays 索引一个数组并对另一个数组执行操作

Arrays 索引一个数组并对另一个数组执行操作,arrays,python-3.x,Arrays,Python 3.x,我得到了两个数组作为 a = [0, 1, 2, 0, 0, 0, 1, 2, 3, 0, 0, 1, 2] b = [1, 2, 1, 2, 3, 1, 4, 5, 1, 5, 6, 7, 8] 在第一个数组a上建立索引,我想对b进行一些计算,如下所示: 将b的元素从a上的一个零加至下一个零,但不包括下一个零处的b元素。并且,如果上有两个连续的零,则相同的元素应存储在包含结果的新向量中 最终向量应为: result=[4,2,3,11,5,21]. 我试着这样做: vec1 = [] fo

我得到了两个数组作为

a = [0, 1, 2, 0, 0, 0, 1, 2, 3, 0, 0, 1, 2]
b = [1, 2, 1, 2, 3, 1, 4, 5, 1, 5, 6, 7, 8]
在第一个数组
a
上建立索引,我想对
b
进行一些计算,如下所示: 将
b
的元素从
a
上的一个零加至下一个零,但不包括下一个零处的
b
元素。并且,如果
上有两个连续的零,则相同的元素应存储在包含结果的新向量中

最终向量应为:

result=[4,2,3,11,5,21].
我试着这样做:

vec1 = []
for i in range(len(a)-1):
    if a[i] == a[i+1] == 0:
        vec1.append(b[i])
print(vec1)

但我只得到了连续零的结果。我无法理解没有连续零的情况。

首先需要找到a中那些元素的索引为0,然后
a
b
创建一对这些元素,然后通过列表理解,找到grub的相关总和,但注意演示,以便更好地理解代码:

>>> a=[0,1,2,0,0,0,1,2,3,0,0,1,2]
>>> b=[1,2,1,2,3,1,4,5,1,5,6,7,8]
>>> indx=[i for i,j in enumerate(a) if j==0]+[len(a)]
>>> l= list(zip(a,b))
>>> [sum(v[1] for v in l[i:j]) for i,j in zip(indx,indx[1:])]
[4, 2, 3, 11, 5, 21]
演示:


@如果j[0]==0]+[len(l)]类型错误:“zip”类型的对象没有len()。我正在研究python 3.4。2@Apc那么会发生什么呢?我再次得到了错误[sum(v[1]表示l[I:j]中的v]),I,j表示zip(indx,indx[1:])]TypeError:'zip'对象不是subscriptable@Apc很抱歉,我错过了你在Python3中使用的
l=list(zip(a,b))
它将100%工作
>>> indx=[i for i,j in enumerate(a) if j==0]+[len(a)]
>>> indx
[0, 3, 4, 5, 9, 10, 13]
>>> zip(indx,indx[1:])
[(0, 3), (3, 4), (4, 5), (5, 9), (9, 10), (10, 13)]