2017-05-29 6 views
0

だから、基本的に私はこのコードが時々動作する理由を知りたがっています...時にはうまく動作し、インデックスエラーを引き起こすこともあります。私は4x100のデータを持つ二次元のリストを持っています。 3つ目の行からデータを取得するだけで、1つの変数ですべてを合計します。ここでインデックスエラー:範囲外のリストインデックスは、時々発生する

はリストである:

a=4 
lst = [[] for _ in xrange(a)] 
wifi= Wireless('wlan0') 
while i<100: 
    results = wifi.scan() 
    print cont 
    print "%-8.16s Scan completed :" % (wifi.ifname,) 
    for ap in results: 
     if ap.bssid==AP1: 
      lst[0].append(ap.quality.getSignallevel()) 

     if ap.bssid==AP2: 
      lst[1].append(ap.quality.getSignallevel()) 

     if ap.bssid==AP3: 
      lst[2].append(ap.quality.getSignallevel()) 

     if ap.bssid==AP4: 
      lst[3].append(ap.quality.getSignallevel()) 
i=i+1 
cont=cont+1 

for j4 in range(0,100): 
    num7=num7+lst[3][j4] 
+1

私にあなたの 'lst'オブジェクトの例を提供してください。失敗した場合は –

+0

となります。' lst'とは何ですか?その内容はおそらくあなたの犯人です。 – Signal

+0

インデックスが0から始まるので、実際には4行目からデータを取得しています。 'lst'は正確に4x100ですか? 'len(lst)== 100'と' all(len(c)== 4で最初はc)== True'ですか? – Ben

答えて

0

すでにあなたが範囲エラー外のインデックスを持っている正確な理由を教えてするのに十分な情報がないと述べてきたように。

  1. wifi.scan()

    がリストに正確に4つの値を返しません:

    はいくつかの理由があります。このため、lstの3番目のリストのサイズは100ではありません。ちょうどresultsのリストに正確に4つの値があることを確認してください。

  2. 何らかの理由で文が正しく機能しない場合。各apアイテムの値を確認する必要があります。値を印刷して値を読み取るだけです。定数AP1AP2など - は正しく初期化されていますか?

また、私が代わりにちょうどifelifステートメントを使用します。私はコードをより読みやすくていいと思う。

+0

ありがとう!問題は、各配列の長さがコンパイルごとに異なることです! –

関連する問題