当列表中的元素数量为奇数时,代码崩溃

时间:2017-10-23 11:10:55

标签: python list

好的,所以我正在制作一个程序,从数组/列表中取出数字3的每个瞬间。

您可以在下面看到数组索引数量不均匀的示例。

<p class="text"><a href="Source link" target="_blank">Source Keyword</a><a href="Our Site Link" target=_blank"></a></p>

它应该打印出[1,2]但它会崩溃。

2 个答案:

答案 0 :(得分:1)

添加如下的打印语句:

def remove(b,o):
    while o!= []:
        print(o)
        if b == o[0]:
            s = [o[1]] + remove(b,o[2:])
            return s
        else:
           ss = [o[0]] + remove(b,o[1:])
           return ss
    if o==[]:
        return o

快速找到问题。

[1, 2, 3]
[2, 3]
[3]

当它到达3时,o中只有一个元素,因此o[1]会引发IndexError。此外,它甚至不应该将o[1]直接添加到列表中,因为它可能是3。

此外,没有必要使用循环或第二个if语句,因为它无论如何都不会运行多次。除了添加列表之外,还有更快的方法。

总而言之,这是一个旨在保持现有算法完整的解决方案(当然有更好,更有效的方法):

def remove(b,o):
    if o == []:
        return []
    s = remove(b, o[1:])
    if b != o[0]:
       s.insert(0, o[0])
    return s

答案 1 :(得分:-1)

试试这个。 x = filter(lambda a: a != 3, o)

当列表中的元素为奇数时,您可以省去编写崩溃的功能。