2017-02-07 17 views
0

我是python的新手。我有一个任意长度的long int值的列表,我需要将它分成相等大小的值。我尝试了很多方法来做到这一点,但它没有以正确的格式打印。python拆分数组到相等长度值

我定义了一个名为

arr = [10816446963217280179219841728017921984108164469632 
928047221121299210511552129921051155292804722112 
50562677440755267009927552670099250562677440 
23552216364842368604561924236860456192235522163648 
179217208962112891264211289126417921720896 
30081517568473642615684736426156830081517568 
2624284224185650156818565015682624284224 
5765318451245216051245216057653184 
288020416028163121792281631217922880204160 
]; 

我有将返回一个数组值的API阵列。我将使用输出和我做这个操作:

arr = [1081........ 
.................]; 
for i in range(0, len(arr), 8): 
print " ".join(map(str,arr[i:i + 8])) 

10816 4469632 17280 17921984 17280 17921984 10816 4469632 
9280 4722112 12992 10511552 12992 10511552 9280 4722112 
5056 2677440 7552 6700992 7552 6700992 5056 2677440 
23552 2163648 42368 60456192 42368 60456192 23552 2163648 
1792 1720896 2112 891264 2112 891264 1792 1720896 
3008 1517568 4736 4261568 4736 4261568 3008 1517568 
2624 284224 1856 501568 1856 501568 2624 284224 
576 53184 512 452160 512 452160 576 53184 
2880 204160 2816 3121792 2816 3121792 2880 204160 

我需要打印这样的价值观:

a  b  c  d  e  f  g  h 
10816 4469632 17280 17921984 17280 17921984 10816 4469632 
9280 4722112 12992 10511552 12992 10511552 9280 4722112 
5056 2677440 7552 700992 7552 6700992 5056 2677440 
23552 2163648 42368 60456192 42368 60456192 23552 2163648 
1792 1720896 2112 891264 2112 891264 1792 1720896 
3008 1517568 4736 4261568 4736 4261568 3008 1517568 
2624 284224 1856 501568 1856 501568 2624 284224 
576 53184 512 452160 512 452160 576 53184 
2880 204160 2816 3121792 2816 3121792 2880 204160 

我与 '\ T' 试图像

for i in range(0, len(arr), 8): 
print "\t".join(map(str,arr[i:i + 8])) 

但打印不正确请帮我做这个。 在此先感谢。

+1

为什么你'arr'不是用逗号隔开? –

+0

print“\ t”.join(map(str,arr [i:i + 8])) 上面的print语句将删除方括号和逗号。 –

+0

所以你的清单只包含一个庞大的数字? –

回答

1

使用str.format您可以调整您的值。 <N将左对齐并填充到N个字符,>N将右对齐,^N将格式化并填充左侧和右侧直到N个字符。

for i in range(0, len(arr), 8): 
    for item in arr[i:i+8]: 
     print('{:<8}'.format(item), end = ' ') 
    print() 

或者更紧凑

for i in range(0, len(arr), 8): 
    print(' '.join('{:<8}'.format(item) for item in arr[i:i+8])) 

# Output 
10816 4469632 17280 17921984 17280 17921984 10816 4469632 
9280  4722112 12992 10511552 12992 10511552 9280  4722112 
5056  2677440 7552  700992 7552  6700992 5056  2677440 
23552 2163648 42368 60456192 42368 60456192 23552 2163648 
1792  1720896 2112  891264 2112  891264 1792  1720896 
3008  1517568 4736  4261568 4736  4261568 3008  1517568 
2624  284224 1856  501568 1856  501568 2624  284224 
576  53184 512  452160 512  452160 576  53184 
2880  204160 2816  3121792 2816  3121792 2880  204160 
+0

是!问题解决了。谢谢Steven Summers。 –