python - 有没有更好的方法从 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)
解决方案
如果找到 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
推荐阅读
- java - 我如何在另一种方法中使用本地字符串值
- laravel - ReflectionException 类 Illuminate\Http\Factory 不存在
- laravel - Laravel Validator::extendedDependent() 动态错误信息
- node.js - Mongoose如何引用相同的架构
- python - 将 CSV 文件解析为每个键具有多个值的字典
- php - 如何为 Wordpress Gutenberg 图像块输出添加宽度和高度?
- dart - 如何将 array.map().toList 转换为泛型类型?
- php - 我想在php中下载一个带有curl的代理列表
- flutter - 选择图像时按下后退按钮时应用程序崩溃
- wordpress - 如何从 wordperess 中删除 pingback 标记 xmlrpc