首页 > 解决方案 > 有没有更好的方法从 Python 列表中排除元素?

问题描述

在 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) 



标签: pythonpython-3.x

解决方案


如果找到 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

推荐阅读