相关疑难解决方法(0)

避免Python和默认启动arg行为

我正在使用实现__add__但不是子类的Python对象int.MyObj1 + MyObj2工作正常,但sum([MyObj1, MyObj2])导致了TypeError,因为sum()第一次尝试0 + MyObj.为了使用sum(),我的对象需要__radd__处理MyObj + 0 或者我需要提供一个空对象作为start参数.有问题的对象不是空的.

在有人要求之前,该对象不像列表或类似字符串,因此使用join()或itertools无济于事.

编辑以获取详细信息:模块具有SimpleLocation和CompoundLocation.我将把位置缩写为Loc.A SimpleLoc包含一个右开间隔,即[开始,结束].添加SimpleLoc产量a CompoundLoc,其中包含间隔列表,例如[[3, 6), [10, 13)].最终用途包括遍历联合,例如[3, 4, 5, 10, 11, 12],检查长度和检查成员资格.

数字可以相对较大(例如,小于2 ^ 32但通常为2 ^ 20).间隔可能不会非常长(100-2000,但可能更长).目前,仅存储端点.我现在暂时想到尝试子类化set,使得该位置被构造为set(xrange(start, end)).但是,添加集将使Python(和数学家)适合.

我看过的问题:

我正在考虑两种解决方案.一种是避免sum()和使用本评论中提供的循环.我不明白为什么sum()开始将iterable的第0项添加到0而不是添加第0和第1项(如链接注释中的循环); 我希望有一个神秘的整数优化原因.

我的另一个解决方案如下; 虽然我不喜欢硬编码的零检查,但这是我能够sum()工作的唯一方式.

# ... …
Run Code Online (Sandbox Code Playgroud)

python sum

14
推荐指数
1
解决办法
1206
查看次数

如何在列表中找到元素总和最大的列表?

我有一份清单清单:

x = [[1,2,3], [4,5,6], [7,8,9], [2,2,0]]
Run Code Online (Sandbox Code Playgroud)

我想得到列表中其元素总和最大的列表.在这种情况下[7,8,9].

我宁愿有一个花哨的map或lambda列表理解方法而不是for/while/if循环.

最好的祝福

python sum list max

11
推荐指数
1
解决办法
371
查看次数

标签 统计

python ×2

sum ×2

list ×1

max ×1