2012-09-27 5 views
6

Sto provando a creare una lista che è popolata da una stringa ricorrente e un numero che contrassegna quale di seguito è una riga. Il numero che segna quante stringhe ci saranno è ottenuto da una variabile int.Creare un elenco Python riempito sempre con la stessa stringa e un numero che aumenta in base a una variabile.

Quindi qualcosa di simile:

b = 5 
a = range(2, b + 1) 
c = [] 
c.append('Adi_' + str(a)) 

Speravo che questo creerebbe una lista come questa:

c = ['Adi_2', 'Adi_3', 'Adi_4', 'Adi_5'] 

Invece ottengo una lista come questa

c = ['Adi_[2, 3, 4, 5]'] 

Così, quando Provo a stamparlo in nuove righe

for x in c: 
    print"Welcome {0}".format(x) 

Il risultato di questo è:

Welcome Adi_[2, 3, 4, 5] 

il risultato che voglio è:

Welcome Adi_2 
Welcome Adi_3 
Welcome Adi_4 
Welcome Adi_5 

Se qualcuno ha idee lo apprezzerei.

+0

hai già la stringa formattata. Dovresti cambiare la linea di stampa in "Welcome Adi_" e formattare il numero direttamente nella stringa. Non devi preoccuparti di modificare gli elementi all'interno di un elenco. – kreativitea

risposta

11

È quasi fatta:

for i in a: 
    c.append('Adi_' + str(i)) 

La linea iniziale è stato trasformando la lista tuttaa come una stringa.

Nota che si potrebbe eliminare il ciclo con una lista di comprensione e un po 'string formatting:

c = ['Adi_%s' % s for s in a] 

o

c = ['Adi_{0}'.format(s) for s in a] #Python >= 2.6 
+0

Sì, questo è stato per me. Ora capisco la lista che si sta formando ma non capisco la s. Vado a sostituire le liste di Google: D. Grazie. – Adilicious

+1

Controllare http://docs.python.org/library/string.html#formatstrings @Adilicious e http://docs.python.org/library/stdtypes.html#string-formatting –

+0

ti ringrazio :) – Adilicious

0

O come una lista di comprensione:

b = 5 
a = range(2, b + 1) 
c = ["Adi_" + str(i) for i in a] 
1

Utilizzando list comprehensions:

b = 5 
a = range(2, b + 1) 
c = ['Adi_'+str(i) for i in a] 
for x in c: 
    print"Welcome {0}".format(x) 
0

O tutto su una riga:

>>> for s in ['Welcome Adi_%d' % i for i in range(2,6)]: 
...  print s 
... 
Welcome Adi_2 
Welcome Adi_3 
Welcome Adi_4 
Welcome Adi_5 
Problemi correlati