从列表中删除与lis中其他编号不在x范围内的元素/编号

2024-04-26 07:26:53 发布

您现在位置:Python中文网/ 问答频道 /正文

mylist=[14,35,37,39,42]

我只需要把相距3个数字以内的数字相加。换句话说,数字是35、37、39和42,而不是14。是否有一种简单的方法来检查列表中的每个元素(数字),以查看在该数字的3个数字内是否至少有一个其他数字(仅供参考,列表中的数字将始终按升序排列)…然后从列表中删除该数字,以便我可以执行以下操作:

总和(mylist)


Tags: 方法元素列表数字总和升序mylist
1条回答
网友
1楼 · 发布于 2024-04-26 07:26:53

是的,有:

>>> mylist = [14,35,37,39,42]
>>> sum(v for i, v in enumerate(mylist) 
...           if (i > 0 and v - mylist[i-1] <= 3) or 
...              (i < len(mylist) - 1 and mylist[i+1]-v <= 3))
153

i > 0i < len(mylist) - 1这样索引就不会越界,v - mylist[i-1] <= 3mylist[i+1]-v <= 3检查与下一个或上一个元素的差值是否小于或等于3

这将添加至少有一个小于或等于3的伙伴的所有数字,如果您要将它们分组并分别添加不同的组,则需要稍微更改列表。例如,如果你有[1, 3, 5, 20, 23, 25, 27],它会把所有的数字加起来

相关问题 更多 >