python将列表逆序,python将列表倒序
引用:这个问题源于一位网友的帮助。作为水团龙王,我有义务带这个问题。我们先来看问题:
当你拿到标题的时候,标题的意思就已经很明确了。需要删除列表中所有带有2的元素,然后输出删除后的新列表。我的第一个想法是用for循环遍历字符串,在s中使用字符串运算符x(如果x是s的子串,则返回True,否则返回False),使用if函数,如果为True则移除元素。最后,输出一个新的列表。
代码和运行结果如下(这是错误的)
与原列表相比,删除了一些带2的元素,但没有完全删除。为什么?
我们来分析一下python是根据列表元素的下标来遍历的。首先,元素123的下标为0,元素212的下标为1。在第一遍中,执行s.remove,删除元素123。当进入第二个周期的时候!重点来了。注意,此时已经删除了元素123,因此元素212的下标从1变为0,元素434的下标从2变为1。下标0已经在第一个循环中执行了,所以第二个循环将寻找下标1的元素。
想必你已经知道为什么在输出结果中没有删除212,因为这两个商品根本没有被python发现,取了前一个元素的位置逃避了例行检查。为什么1215号元素没有被删除?因为它的下标改成了前一个元素231的位置,所以躲过了python大哥的例行检查。
好了,错误的原因找到了。怎么解决?穿越就像一条路。你可以从路的起点走到终点,也可以从路的终点走到起点。刚才我们是正序遍历,解决不了问题。反过来呢?试一试。
反向遍历的结构可以如下:对于范围内的I(len(s)-1,-1,-1)
代码的运行结果如下(这是正确的)
正确的例子表明我们得到了期望的输出结果。这里不再解释为什么逆序没有问题(因为不知道怎么解释,哈哈哈)。请记住,在使用for循环删除元素时,应该从后向前遍历,否则列表将会越界。
除了使用remove方法,我们还有其他选择吗?当然有,python。其他功能也就那么几个。
有几种(或更多)方法可以实现摘要列表的反向遍历:
各种方法的总结
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。