我想使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中做到这一点?
答案 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]