2012-03-27 3 views
0

Ich habe eine Liste:Wie drucke ich Python eine Liste mit Formatierung?

L = [1, 2, 3, 4, 5, 6] 

und ich möchte

1 B 2 J 3 C 4 A 5 J 6 X 

aus dieser Liste drucken.

Wie mache ich das?

Muss ich eine andere Liste machen und zip sie, oder gibt es eine Möglichkeit, wie ich die Buchstaben in meinem Format-Spezifizierer haben kann?

+11

Woher kommen diese Buchstaben? –

+0

Sie sind konstant. Sie werden SI-Präfixe sein, wie Yotta, Zeta, Kilo, Mega, ... –

+0

Ok, es war einfach zu erraten. (Ironie) –

Antwort

1

Ein schöner Weg, dies zu tun, ist ein Wörterbuch von Zahlen zu Präfixe haben:

prefixes = {1: 'B', 2: 'J', 3: 'C', 4: 'A', 5: 'J', 6: 'X'} 

Dann können Sie tun:

print ' 'join('%s %s' % (num, prefix) for num, prefix in prefixes.itervalues()) 

Wenn Sie auch eine Liste der Buchstaben haben:

nums = [1, 2, 3, 4, 5, 6] 
ltrs = ['B', 'J', 'C', 'A', 'J', 'X'] 

print ' '.join('%s %s' % (num, ltr) for num, ltr in zip(nums, ltrs) 
+0

'ltrs' muss keine Liste sein, es kann nur ein' str'ing sein. – agf

+0

Nur für einzelne Zeichenelemente, natürlich ... –

2

Man könnte es so oder so tun:

L = [1, 2, 3, 4, 5, 6] 

from itertools import chain 

# new method 
print "{} B {} J {} C {} A {} J {} X".format(*L) 
# old method 
print "%s B %s J %s C %s A %s J %s X" % tuple(L) 
# without string formatting 
print ' '.join(chain.from_iterable(zip(map(str, L), 'BJCAJX'))) 

Lesen Sie die Dokumentation auf str.format und string formatting.

Verwandte Themen