counts = misc. array
for i in counts:
if i < "(sum of the two integers next to i)/4"
return -1
我想做的是将列表中所有小于其两个邻居平均值一半的值设置为 -1。即对于列表 [10., 20., 10., 25., 30.] 如果 i=3 那么我想看看 10 是否小于 (20+25)/4 因为那是 45/4 > 10然后我想将 10 设置为 -1。然后,我将过滤列表中所有 >= 0 的值。
由于您应该从 i+1 开始,因为这个过程不适用于第一个值,然后您应该以 -1 结束,因为这个过程不适用于最后一个值,这使情况变得更加复杂。任何帮助将不胜感激。
最佳答案
您可以从this answer 借用滑动窗口生成器| ,并像这样使用它:
out = [y if y >= (x+z)/4. else -1 for x,y,z in window(l, 3)]
l
是您的列表。
这会切断第一个和最后一个元素。如果您愿意,可以很容易地对它们做一些不同的事情(例如设置为 -1)。
关于python - 使用列表中其他值的函数过滤 python 中的列表。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15453348/