私が使用しているソリューションは確かにアドホックですが、機能し、これまでの回答よりも優れています。基本的にはVR17が提案した方法ですが、タブのサイズがデータセットに合わせて調整され、ハードコードされているだけではありません.
最初に、数字の文字をある数字で返すメソッドを作成しました。
def charNum(number):
return math.floor(math.log(number,10)+1)
次に、データセットとデータセットcharNum()
の最後のポイントで関数を使用しました。最後のポイントが最大の数であるため、各リストでは最後のポイントのみを使用する必要がありました。次に、数字ではない文字 (ダッシュ、セミコロン、スペース) を数え、それに応じて調整しました。
したがって、最終的な tabLength 変数は次のようになります。lower
upper
tabLength = charNum(lower[-1])+charNum(upper[-1])+3
tabLength
次に、変数を関数にプラグインして、expandTab()
適切な間隔を確保しました。出力例を次に示します。
1-11: *******
12-22: *
23-33: ***
34-44: **
45-55: ***
56-66: *
99-249: *****
250-400: ****
401-551: **
552-702: **
703-853: *
854-1004: ***
99-200079: ******
200080-400060: **
400061-600041: ****
600042-800022: **
800023-1000003: *
これで実際に目にする唯一の問題は、これをテーブルまたは何かに拡張したい場合、タブがすべてファンキーになることです。もし私がそれをやったなら、私はおそらく調べてljust
、rjust
今はあまり詳しくありません. 誰かがより良い答えを思いついた場合に備えて、しばらく質問を開いたままにします。