[英]How do I print a list of numbers vertically?
我正在嘗試解決一個練習。 我應該寫一個 function,它接受一個整數列表,將其轉換為垂直顯示的數字字符串。
mylist = [5,69,2090]
function 應該返回/打印以下字符串:
2
0
6 9
5 9 0
我試圖用下面的代碼解決它,但它對我沒有幫助
def printstring(mylist):
h = len(mylist)//3
for i in range(h):
print(mylist[i],mylist[h+i],l[h+i+1])
lst = [5,69,2090]
n = max(len(str(i)) for i in lst)
for i in zip(*['{:>{n}}'.format(i, n=n) for i in lst]):
print(' '.join(i))
印刷:
2
0
6 9
5 9 0
對於lst = [1,123,12,12345,1234]
:
1
2 1
1 3 2
2 1 4 3
1 3 2 5 4
首先將您的列表項轉換為字符串,然后找到最大長度。 填充您的字符串以適合該長度並打印它們:
lst = [5, 69, 2090]
lst = list(map(str, lst))
max_lenght = max(map(len, lst))
padded_lst = [item.rjust(max_lenght, " ") for item in lst]
for row in zip(*padded_lst):
print(" ".join(row))
2 0 6 9 5 9 0
我會在這里應用幾個步驟。 首先,通過將數字轉換為字符串來確定每個數字的最大數字長度。 其次,使用rjust
將每個數字字符串左填充到該長度。 最后,使用經典的zip(*m)
技巧將矩陣旋轉 90 度並將其全部連接回一個可打印的正方形。
>>> lst = [5,69,2090]
>>> size = max(map(len, map(str, lst)))
>>> m = [str(x).rjust(size, " ") for x in lst]
>>> print("\n".join([" ".join(x) for x in zip(*m)]))
2
0
6 9
5 9 0
不太可讀的兩行
sl = ['{:>{}d}'.format(s, len(str(max(mylist)))) for s in mylist]
print('\n'.join(' '.join(s) for s in zip(*sl)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.