如何使用另一个列表中的匹配值索引复制列表值?

时间:2014-01-22 07:49:17

标签: python list python-2.7

我有两个清单:

A = [476, 1440, 3060, 3060, 500,500]
B = [0,4,10,15]

注意:列表B的长度将始终等于列表A中的个别加配对值的数量。更新列表B将匹配列表A的长度。

我想检查列表A中的重复值,并使用其索引位置复制列表B中的相应值。例如,列表A有A [2] = A [3]和A [4] = A [5](3060和500),所以基于此我想复制B [2]和B [3]并分别在B [3]和B [5]中加上这些。所以更新的列表B看起来像:

B = [0,4,10,10,15,15] 

我尝试了以下来获取重复值的起始索引:

C = [x==A[i-1] for i,x in enumerate(A)][1:]

for idx,l in enumerate(C):
    if l == True:
        print "idx"

但是要做好将这一变化纳入清单B中。任何建议都会很有意义。

1 个答案:

答案 0 :(得分:2)

这是一个天真的实现(不确定我的要求是否正确):

>>> from itertools import groupby
>>> A = [476, 1440, 3060, 3060, 500, 500]
>>> B = [0, 4, 10, 15]
>>> Result = []
>>> for i, g in enumerate(groupby(A)):
        Result += [B[i]] * len(list(g[1]))


>>> Result
[0, 4, 10, 10, 15, 15]