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
I should getの代わりにb=[1, 2, 5, 6, 7, 9, 10]
(3 番目のセルは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)