-1

我想让二维列表的前面的整数等于某个大于 1 的整数。例如,如果我有输入:

L = [[1, 2, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 3, 1, 2, 1, 1, 1, 1]]

所需的输出将是:

[[2, 2, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1], [3, 3, 3, 2, 2, 1, 1, 1, 1]]

这里3必须将 the 的前两个整数设置为等于 this 3,并且将 the 的前一个整数2设置为等于 this 2。在 python 中是否有系统的方法来做到这一点?

4

2 回答 2

1

首先反转您的列表,然后浏览它们并更新它们:

L = [[1, 2, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 3, 1, 2, 1, 1, 1, 1]]
for index, item in enumerate(L):
   item.reverse()
   value = 1
   for list_index, element in enumerate(item):
       if element == 1:
           item[list_index] = value
       else:
           value = element
   item.reverse()
   L[index] = item
于 2013-08-19T16:42:38.180 回答
0
def maxafter(l):
    max = 1
    for elt in l:
        if elt > max: max = elt
        yield max
[[x for x in maxafter(l[::-1])][::-1] for l in L]
于 2013-08-19T16:39:24.057 回答