Python und Formatstring für Array

OP #5488292
Lesenswert?

Hallo Python Experten,

Folgendes Problem:


SecLen=[0,0,0,0,0,0,0,0,0,0]

...
Befüllen von SecLen
...

print("S1:   S2:   S3:   S4:   S5:   S6:   S7:   S8:  ")
print("===============================================")
print([i for i in SecLen[1:9]])

S1:   S2:   S3:   S4:   S5:   S6:   S7:   S8:
===============================================
[912593, 1488619, 1488895, 1490275, 1264611, 0, 524287, 0]

das funktioniert, wohingegen die Formatierung in Hex-Werte
s.u. scheitert.


print("S1:   S2:   S3:   S4:   S5:   S6:   S7:   S8:  ")
print("===============================================")
print("{0:>06x} {1:>06x} {2:>06x} {3:>06x} {4:>06x} {5:>06x} {6:>06x} 
{7:>06x}".format([i for i in SecLen[1:9]]))

    print("{0:>06x} {1:>06x} {2:>06x} {3:>06x} {4:>06x} {5:>06x} 
{6:>06x} {7:>06x}".format([i for i in SecLen[1:9]]))

TypeError: non-empty format string passed to object.__format__


Mir ist nun nicht ganz klar, weshalb der Ausdruck

print("...".format([i for i in SecLen[1:9]]))

einen Fehler verursacht.

[i for ..] ist wohl ein einziges Objekt, wohingegen
format() acht Parameter erwartet.

Wie schaffe ich es []  in acht einzelne Werte zu zerlegen?

Ist für Euch wahrscheinlich trivial, aber ich stehe irgendwie
auf dem Schlauch.

Danke für hilfreiche Antworten.
OP #5488352
Lesenswert?

Bernd,

Danke das war des Pudels Kern!
Der * und ** Stern Operator war mir
bis dato nur im Zusammenhang mit
Directories bekannt.

Aber ich habe es noch weit zum Python Experten ;-)


print("  S1:    S2:    S3:    S4:    S5:   S6:    S7:    S8:  ")
print("======================================================")
print("{0:>06x} {1:>06x} {2:>06x} {3:>06x} {4:>06x} {5:>06x} {6:>06x} 
{7:>06x}".format(*[i for i in SecLen[1:9]]))

  S1:    S2:    S3:    S4:    S5:   S6:    S7:    S8:
======================================================
0decd1 16b6eb 16b7ff 16bd63 134be3 000000 07ffff 000000

LG
Markus
Moderator #5488428
Lesenswert?

Oder so:
1
SecLen = [912593, 1488619, 1488895, 1490275, 1264611, 0, 524287, 0]
2
n = len(SecLen)
3
print(' '.join(map('  S{:d}: '.format, range(n))))
4
print((7*n-1) * '=')
5
print(' '.join(map('{:06x}'.format, SecLen)))

Ausgabe:

1
  S0:    S1:    S2:    S3:    S4:    S5:    S6:    S7: 
2
=======================================================
3
0decd1 16b6eb 16b7ff 16bd63 134be3 000000 07ffff 000000

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren