我最近一直在学习 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 个数字的对齐行,计算最大宽度加一;但我几乎确信有一个:
- 更多“pythonic”方式来做到这一点
- 更有效的方法来做到这一点。
无论如何我都不是大 O 方面的专家,但我相信我的两个 for 循环将其从 O(n) 更改为至少 O(2n),所以我真的很想看看是否有可能以某种方式将它们组合起来. 我也不太热衷于我的format_string
声明,有没有更好的方法呢?你没有帮我在作业或任何事情上作弊,我认为这会通过大多数 Python 课程,我只是想更多地了解 Python 的思维方式,因为我主要来自 Perl(不确定它是否显示: )。提前致谢!