有没有更好的方法从Python列表中排除元素?

有没有更好的方法从Python列表中排除元素?,python,python-3.x,Python,Python 3.x,在Python中寻找一个更干净、更优化的解决方案,用于- 返回数组中数字的总和,空数组返回0。 除此之外,数字13是非常不吉利的,所以它不算数,紧跟在13之后的数字也不算数 sum13([1,2,2,1])→ 六, sum13([1,1])→ 二, sum13([1,2,2,1,13])→ 六, def sum13(nums): 索引_list=[i代表i,如果v==13,则枚举(nums)中的v] 相邻索引列表=[x+1表示索引列表中的x,如果x+1

在Python中寻找一个更干净、更优化的解决方案,用于-

返回数组中数字的总和,空数组返回0。 除此之外,数字13是非常不吉利的,所以它不算数,紧跟在13之后的数字也不算数

sum13([1,2,2,1])→ 六,

sum13([1,1])→ 二,

sum13([1,2,2,1,13])→ 六,


def sum13(nums):
索引_list=[i代表i,如果v==13,则枚举(nums)中的v]
相邻索引列表=[x+1表示索引列表中的x,如果x+1
如果找到13号,您可以
中断
迭代

def sum13(nums):
    if nums:
        res = []
        for num in nums:
            if num != 13:
                res.append(num)
            else:
                break
        return sum(res)
    return 0

这看起来很长,迭代次数太多,但是可读性很强,imho。你想出了多少其他变体/重构的确切副本?你能给我们看看吗,这样我们就不会重复你的努力了?你为什么不认为这个解决方案是最佳的?为什么你使用理解?如果您使用常规for循环,您将拥有更多的控制。
def sum13(nums):
    if nums:
        res = []
        for num in nums:
            if num != 13:
                res.append(num)
            else:
                break
        return sum(res)
    return 0