Çoklu Listeler başlatılıyor Bu korkunç çirkin: tek bir satırda bu değişkenleri bildirmek için bir yolPython -/Çizgi
psData = []
nsData = []
msData = []
ckData = []
mAData = []
RData = []
pData = []
var mı?
Çoklu Listeler başlatılıyor Bu korkunç çirkin: tek bir satırda bu değişkenleri bildirmek için bir yolPython -/Çizgi
psData = []
nsData = []
msData = []
ckData = []
mAData = []
RData = []
pData = []
var mı?
alist, blist, clist, dlist, elist = ([] for i in range(5))
yukarıdaki yaklaşımın olumsuz =
solunda isimlerin sayısını saymak gerekir ve boş listelerinin tam olarak aynı sayıda, (örneğin range
çağrı veya daha açık aracılığıyla) sağda el tarafı.
ana şey, tüm isimler aynı boş listeye bakın değil kullanımı bir topluluk haline getiren
alist = blist = clist = dlist = elist = []
alist, blist, clist, dlist, elist = [[]] * 5
gibi ne de
yapın!
Başar, liste değişkenlerini ilklendirin gibi, yanıt için teşekkür ederiz. Test edildi ve çalışıyor! – thenickname
@thenickname, yardım için her zaman mutlu! –
Harika bir cevap, Ben, alist, blist, clist = [] 'nin C stilini yapmaya çalışıyorum ve bu –
psData,nsData,msData,ckData,mAData,RData,pData = [],[],[],[],[],[],[]
@Alex, Şüphesiz benim kötü, dün gece altı saydım LoL – YOU
Gereksinimlerinize bağlı olarak, bir liste fabrikasıyla varsayılan bir yöntem kullanmayı düşünebilirsiniz.
my_lists = collections.defaultdict(list)
ve sonra doğrudan böylece my_lists [ "psData"] ve ekleyebileceğiniz: şey gibi. Bu, ilgili belge sayfasıdır: http://docs.python.org/library/collections.html#collections.defaultdict
Bunun için teşekkürler! Bu python'u yeni başlayanlara faydalı bir kod yazmama izin verir, ama aynı zamanda kodumu geliştirmek için öğrenmeye devam edebildiğim birçok gelişmiş özelliğe de sahiptir. – vorpal
Bu güçlü noktalarından biri ve Guido'nun ve diğer temel katkıda bulunanların dil tasarımına olan vasiyetinin bir kanıtı! – Francesco
Verileri başlatmak/saklamak için bir sınıf kullanabilirsiniz, daha fazla satır alır, ancak daha kolay okunabilir ve nesne yönelimli olabilir.
gibi: Başlangıçta yakınındaki ana yılında Sonra
class Data:
def __init__(self):
self.var1=[]
<etc.>
def zeroize(self):
self.var1=[]
<etc.>
:
data=Data()
senin döngüler içinde Sonra
veya herhangi bir yerde ana sonrası bildiriminde Sınıfa kullanabilirsiniz.
data.var1.append(varN)
if(something):
data.zeroize()
Bu aslında bir dict, aynı zamanda - OP'nin sorusunu çözmüyor, ne de basit, OP açıkça daha az kod istiyordu ve daha az güçlük, bu böyle değil. bununla birlikte, bu sorun için bir çözüm türü, bir şey hak ediyor, ama çok daha iyi yapılabilir, aynı zamanda, bazı garip isimler kullandınız. –
Düzenliliklerin, performansın bir sonucu olarak ortaya çıkabileceğini unutmayın. Aralık işlev çağrısı, init işlemini biraz yavaşlatır. Değişkeni pek çok kez yeniden yapılandırmanız gereken bir işleminiz varsa dikkatli olun.
import time
def r_init():
st=time.time()
alist, blist, clist, dlist, elist = ([] for i in range(5))
et=time.time()
print("{:.15f}".format(et-st))
def p_init():
st=time.time()
alist=[];blist=[];clist=[];dlist=[];elist=[]
et=time.time()
print("{:.15f}".format(et-st))
for x in range(1,10):
r_init()
p_init()
print("\n")
Böyle bir şeyi yapmak, özellikle eğer çirkin olduğunu sanmıyorum psData = [] # orada – extraneon
yılında çirkinlik ya da değil, birbirine çok benzer bu isimler bir ile dikkat neler açıklayan bazı comment: psData ve pdata, mAData ve msData ... – Francesco
-1: Bunu en az tuş vuruşu kullanan bir "kod golf" yapısıyla değiştirmeyin. Bu güzel. Herhangi bir şey daha fazla, bu programı sürdürmek isteyen milletleri yönlendirecek ve hayal kırıklığına uğratacaktır. Gerçekten, bundan daha karanlık bir şey muhtemelen buna yeniden yazılacaktır. –