我正在为 XML 电子表格中的给定公式构建参考地图的任务。例如,对于以下行:
<row>
<cell></cell>
<cell></cell>
<cell index="5"></cell>
<cell></cell>
<cell></cell>
<cell index="9"></cell>
<cell></cell>
......
</row>
如果我使用enumerate(row.findall("cell"))
它将返回a=[1, 2, 3, 4, 5, 6, 7]
。但是,该属性index
提供特定单元格的信息。也就是说,而不是a
我应该得到b=[1, 2, 5, 6, 7, 9, 10]
(注意第三个单元格是5,所以它改变了枚举,类似的事情发生在索引为9之后)。
我如何从a
到b
?我想要一个更 Pythonic 的程序。我现在拥有的类似 C 的语法(我有点厌烦):
testcases = [[1, 2, 5, 4, 5, 9, 8], [5, 4, 5, 9, 8], [1, 2, 5, 4, 5, 9]]
for cells in testcases:
first = None
for i, c in enumerate(cells):
if c>i+1:
first = c
if i>0 and c < cells[i-1]:
cells[i]=cells[i-1]+1
elif i>0 and c> cells[i-1]+1 and first is None:
first=c
for j in range(i)[::-1]:
cells[j]=c-1
c=c-1
print(cells)