2016-03-28 34 views
1

Boş/boş alanların dizinlerini bir liste içinde almaya çalışıyorum ('') ve bunları yeni bir listeye ekliyorum. Ancak, bunu yaptığımda, sadece ilk endeksi tekrar tekrar ekliyor.Listeden doğru endeksler düzgün çalışmıyor

for line in line_list: 
     if line == '': 
      tlist.append(line_list.index(line)) 

Bu düzeltmenin inanılmaz derecede basit olması gerektiğini biliyorum, ancak öğleden sonra beni sinir ediyor. bana verir tlist

baskı [3,3,3,3,3,3,3,3,3,3,3 .......]

+0

Bunu yapmaya çalıştığınız bir dili etiketlediyseniz, yararlı olur. – NAMS

+0

Evet, bu benim kötüydü. Sabit –

cevap

1

index() fonksiyon dizinini dönüyor ilk değerinin oluşumu, bu yüzden işe yaramaz. Bir liste anlama daha mantıklı kullanarak, onun yerine bu deneyin ve enumerate() size her öğenin dizinini söyleyecektir:

tlist = [idx for idx, line in enumerate(line_list) if line == ''] 
0

Python index() fonksiyon belirtilen elemanın yalnızca İLK oluşumunu döndürür. Sonuç olarak, yalnızca boş bir öğenin ilk oluşumunun dizinini tlist'a eklersiniz. Bunun yerine, enumerate işlevini kullanarak, bir değişkendeki dizin numarasını da girmenize olanak tanır.

for index, line in enumerate(line_list): 
    if line == '': 
     tlist.append(index) 

Alternatif olarak, ben şahsen yerine for each döngü ile enumerate kullanmanın öneriyoruz bir while döngü kullanabilirsiniz. Burada, hangisini seçerseniz seçin, her ikisi de işe yarıyor demektir.