データ構造のトラバーサルを表す文字列のリストがあります。リンク リストのトラバーサルをよりコンパクトな表現にまとめたいと考えています。next
これを行うには、隣接リンクとリンクの数を数えて、prev
それらを 1 つの整数にまとめたいと思います。
私がやりたい変換の例を次に示します。
['modules'] --> ['modules']
['modules', 'next'] --> ['modules', 1]
['modules', 'prev'] --> ['modules', -1]
['modules', 'next', 'next', 'next', 'txt'] --> ['modules', 3, 'txt']
['modules', 'next', 'prev', 'next', 'txt'] --> ['modules', 1, 'txt']
['super_blocks', 'next', 's_inodes', 'next'] --> ['super_blocks', 1, 's_inodes', 1]
各next
リンクは +1 としてカウントされ、各リンクprev
は -1 としてカウントされます。隣接するnext
とprev
は互いに打ち消し合います。それらは任意の順序で来る可能性があります。
これに対する実用的な解決策がありますが、満足のいくエレガントで Pythonic な解決策を見つけるのに苦労しています。