2017-02-07 3 views
0

Ich bin neu in Python. Ich habe eine Liste von langen int-Werten beliebiger Länge, und ich muss sie in gleiche Größenwerte aufteilen. Ich habe so viele Möglichkeiten ausprobiert, aber es wird nicht im richtigen Format gedruckt.Python Split-Array in gleiche Länge Werte

I definiert ein Array

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

Ich habe eine API genannt, die ein Array-Wert zurück. Ich werde diesen Ausgang verwenden und ich tun, um diese Operation:

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 

Ich brauche Werte wie folgt drucken:

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 

ich mit '\ t' versucht, wie

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

aber es druckt nicht richtig, bitte hilf mir dabei. Vielen Dank im Voraus.

+1

Warum ist Ihr 'arr' nicht durch Komma getrennt? –

+0

Drucken "\ t" .join (Karte (str, arr [i: i + 8])) Die obige Druckanweisung entfernt eckige Klammern und Kommas. –

+0

Ihre Liste enthält also nur eine große Zahl? –

Antwort

1

Mit str.format können Sie Ihre Werte ausrichten. <N wird linksbündig ausgerichtet und mit N Zeichen gefüllt, >N wird rechtsbündig ausgerichtet und ^N formatiert zwischen und füllt linke und rechte Seite bis N Zeichen.

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

Oder kompakter

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

Yup !!! das Problem ist gelöst. Danke Steven Summers. –

Verwandte Themen