2011-08-23 7 views
7

Tengo una tupla de números, digamos nums = (1, 2, 3). La duración de los nums no es constante. ¿Hay una manera de utilizar el formato de cadenas en Python para hacer algo como estoformato de cadena python para longitudes de tupla variables

>>>print '%3d' % nums 

que producirá

>>> 1 2 3 

espero que no sea una pregunta repetida, pero yo no lo encuentro si lo es. Gracias

Respuesta

7

Prueba esto:

print ('%3d'*len(nums)) % tuple(nums) 
2

usted podría utilizar .join():

nums = (1, 2, 3) 
"\t".join(str(x) for x in nums) # Joins each num together with a tab. 
1

¿Es esto suficiente para usted?

print ' '.join(str(x) for x in nums) 
+0

@agf: gracias por la captura de que - do orrected – viraptor

4

Ya que nadie ha dicho todavía:

''.join('%3d' % num for num in nums) 
+0

se ve num-my ... – Gerrat

+1

Num num num num. – nmichaels

-1
params = '%d' 
for i in range(1,15): 
    try: 
     newnum = (params)%nums 
    except: 
     params = params + ',%d' 
     next 
    print newnum 
+1

¿Has intentado ejecutar esto? Sugerencia: se bloqueará si el tamaño de 'nums' es mayor que 1. – Maehler

+0

Funcionó bien para mí en Gentoo Linux, Python 2.7.2 ...? – RightmireM

+0

Al mirarlo ahora, veo cómo estás pensando. Sin embargo, debe haber un error de indentación en la última línea. La forma en que se escribe el código aquí, se bloqueará si 'len (nums)> 1', y si' len (nums) == 1', imprimirá el número 14 veces. – Maehler

1

uso de '' .formato

nums = (1, 2, 3) 
print(''.join('{:3d} '.format(x) for x in nums)) 

producir

>>> 1 2 3 
Cuestiones relacionadas