私は最近Pythonを学んでおり、今夜はいくつかの例を試していて、楽しみのために次のことを思いつきました:
#!/usr/bin/env python
a = range(1,21) # Range of numbers to print
max_length = 1 # String length of largest number
num_row = 5 # Number of elements per row
for l in a:
ln = len(str(l))
if max_length <= ln:
max_length = ln
for x in a:
format_string = '{:>' + str(max_length) + 'd}'
print (format_string).format(x),
if not x % num_row and x != 0:
print '\n',
次を出力します。
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
スクリプトは私が望むことを行っています。つまり、行ごとに 5 つの数字の行を整列して印刷し、最大幅に 1 を加えた値を計算します。しかし、次のいずれかがあるとほぼ確信しています。
- これを行うためのより「pythonic」な方法
- これを行うためのより効率的な方法。
私は決して大きな O の専門家ではありませんが、私の 2 つの for ループはこれを O(n) から少なくとも O(2n) に変更すると信じているので、何らかの方法でそれらを組み合わせることが可能かどうかを本当に知りたいです。 . 私も自分のformat_string
宣言にあまり熱心ではありません。それを行うより良い方法はありますか? あなたは私が宿題や何かをカンニングするのを手伝っていません.これはほとんどのPythonクラスに合格すると思います.私は主にPerlから来ているので、Pythonの考え方に頭を包み込みたいだけです. )。前もって感謝します!