在整数>之前分配2d列表的元素。 1(python)

时间:2013-08-19 16:30:55

标签: python

我想使2d列表的前一个整数等于某个大于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的前两个整数必须设置为等于3,并且2的前一个整数必须设置为等于{{1} }}。有没有系统的方法在python中做到这一点?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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]