2012-01-27 13 views
5

sto inizializzazione di un sacco di variabili stringa come segue:Inizializzare molte variabili stringa

a, b, c, d, e, f, g, h = "", "", "", "", "", "", "", ""

si può vedere che questo non sembra molto bello (inoltre non deve essere le variabili hanno nomi più lunghi). C'è qualche scorciatoia più compatta?

+0

a cosa servono le variabili? Puoi usare una sola lista o dizionario? Perché leghi tutti i nomi contemporaneamente? – jfs

+0

Le variabili sono attributi (parametri) come id, nome, descrizione, ... e molti altri estratti da una pagina web. Nel ciclo 'for' alcuni valori saranno" "e alcuni saranno riempiti e una tupla (a, ... h) verrà aggiunta a un elenco di tuple e le variabili dovrebbero essere reimpostate per il ciclo successivo di ciclo a" "(perché i vecchi valori non dovrebbero essere mischiati) – xralf

+0

@JFSebastian Userò il dizionario come suggerisce Rik. Ma l'ha cancellato. – xralf

risposta

14

Decisamente più compatta:

a=b=c=d=e=f=g=h="" 
+6

Nota questo ha senso solo quando si assegnano valori immutabili. –

8

Come risposta alternativa alla a=b=c=...=value soluzione di prova:

a, b, c, d, e, f, g, h = [""]*8 

Anche se si sta facendo questo, potrebbe avere senso di mettere le variabili in un elencare se hanno qualche relazione tra loro.

+0

Molto più "pythonesque"! –

2

Ai posteri:

from itertools import repeat 
a, b, c, d, e, f, g, h, *_ = repeat("") 
+0

Così ho provato questo e mi sono chiesto il costrutto di '* _'. Questa è fondamentalmente una serie di argomenti che non ci interessano. E senza un numero nella sua lista di argomenti, 'repeat' si ripeterà indefinitamente. Il mio computer è bloccato. Non potevo nemmeno uscire dal programma. Non farlo a meno che non si specifichi un argomento numero. – Bobort

2
from collections import defaultdict 

Per inizializzare:

attrs = defaultdict(str) 

Per ottenere 'a' valore:

print attrs['a'] # -> '' 

Per cambiarlo:

attrs['a'] = 'abc' 
0

provare questo.

a, b, c, d, e, f, g, h = ["" for i in range(8)] 
Problemi correlati