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

时间:2019-09-01 16:22:53

标签: python python-3.x

在Python中寻找更干净,更优化的解决方案-

返回数组中数字的总和,对于空数组返回0。 除了13号是非常不幸的数字之外,因此它不会计数,紧接在13号之后的数字也不会计数。

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

sum13([1,1])→2

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


    def sum13(nums):
      indexes_list = [i for i,v in enumerate(nums) if v==13 ]
      adjacent_indexes_list = [x+1 for x in indexes_list if x+1 < len(nums)]
      ignore_list = indexes_list + adjacent_indexes_list
      desired_nums = [v for i,v in enumerate(nums) if i not in (ignore_list) ]
      return sum(desired_nums) 



1 个答案:

答案 0 :(得分:0)

如果找到数字13,则可以break进行迭代。

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