索引范围错误

jok*_*inx 2 python

我一直收到错误'IndexError:list index out of range'

不知道我做错什么它适用于一对夫妇运行错误我唯一能想到的是我得到的名字太长了变量

        mylist = [x +'.mp3' for x in re.findall(r'file=(.*?).mp3',the_webpage)]
    #Remove Duplicates
    if mylist:
        mylist.sort()
        last = mylist[-1]
        for i in range(len(mylist)-3, -1, -1):
            if last == mylist[i]:
                del mylist[i]
            else:
                last = mylist[i]
    print " "
    #takes the quotes out of the string
    #ti = titl1[0]
    n1 = titl1[0]
    n2 = song1[0]

    #sg = song1
    sname = "".join(tuple(n1 + "-" + n2 + ".mp3"))

    print sname
    url = mylist[0]
Run Code Online (Sandbox Code Playgroud)

结果

Traceback (most recent call last):
  File "grub.py", line 59, in <module>
    url = mylist[0]
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

mgi*_*son 6

你的IndexError建议mylist是空的,这意味着你可能在你的循环中删除了比你想要的更多的元素(或者你的列表开头是空的).要排序和删除重复项,您可以这样做

mylist = sorted(set(mylist))
Run Code Online (Sandbox Code Playgroud)

即使这样,也不能保证你不会得到一个空列表(如果你的列表开始是空的,它不会神奇地获得更多的元素).在尝试分配之前,您还可以确保列表不为空url:

#"Look Before You Leap"  (LBYL)
if mylist:  
   url = mylist[0]
else:
   url = '???'
Run Code Online (Sandbox Code Playgroud)

然而,一些(大多数)会认为try- except子句更"p​​ythonic"在这里......

#Maybe it's "Easier to Ask Forgiveness than Permission" ... (EAFP)
try:
   url = mylist[0]
except IndexError:
   url = '???'
Run Code Online (Sandbox Code Playgroud)