索引错误:有时会发生列表索引超出范围

时间:2017-05-29 03:57:35

标签: python arrays python-2.7

所以,基本上我想知道为什么这段代码有时会起作用...有时它工作正常,有时会带来索引错误。我有一个带有数据的二维列表4x100。我只是从第三行检索数据,将其全部加在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 个答案:

答案 0 :(得分:0)

正如已经提到的那样,没有足够的信息可以告诉您为什么索引超出范围错误。

有几个可能的原因:

  1. wifi.scan()未在列表中返回4个值。这就是lst中第三个列表的大小不是100的原因。只需检查results列表中是否有4个值。

  2. 并非所有if语句都由于某种原因而起作用。您需要检查每个ap项的值 - 只需打印出来并读取值。常量AP1AP2等 - 它们是否正确初始化?

  3. 另外,我会使用elif语句而不只是if。我认为它会使代码更具可读性和更好。