使用列表中其他值的函数在python中过滤列表。 counts=misc。排列 就我而言: 若i10,那么我想将10设置为等于-1。然后,我将筛选列表>=0中的所有值
我想做的是将列表中小于两个邻居平均值一半的所有值设置为-1。i、 e.对于列表[10,20,10,25,30.]如果i=3,那么我想看看10是否小于(20+25)/4,因为这是45/4>10,那么我想将10设置为等于-1。然后,我将筛选列表>=0中的所有值使用列表中其他值的函数在python中过滤列表。 counts=misc。排列 就我而言: 若i10,那么我想将10设置为等于-1。然后,我将筛选列表>=0中的所有值,python,list,function,filter,Python,List,Function,Filter,我想做的是将列表中小于两个邻居平均值一半的所有值设置为-1。i、 e.对于列表[10,20,10,25,30.]如果i=3,那么我想看看10是否小于(20+25)/4,因为这是45/4>10,那么我想将10设置为等于-1。然后,我将筛选列表>=0中的所有值 更复杂的是,你应该从i+1开始,因为这个过程不适用于第一个值,然后你应该以-1结束,因为这个过程不适用于最后一个值。任何帮助都将不胜感激 您可以从中借用滑动窗口生成器,然后像这样使用它: counts = misc. array f
更复杂的是,你应该从i+1开始,因为这个过程不适用于第一个值,然后你应该以-1结束,因为这个过程不适用于最后一个值。任何帮助都将不胜感激 您可以从中借用滑动窗口生成器,然后像这样使用它:
counts = misc. array
for i in counts:
if i < "(sum of the two integers next to i)/4"
return -1
其中l
是您的列表
这将删除第一个和最后一个元素。如果您愿意,可以很容易地对它们执行不同的操作(例如设置为-1)。这是否符合您的要求(假设值位于列表
数据中)
就像这样:
filtered = [data[i] for i in range(1,len(data)-1) if data[i] >= (data[i+1]+data[i-1])/4]
-x
是计数中的idex-->表示范围内的x(len(计数[1:-1])
-x+1
因为我们知道计数[0]和计数[-1]都已超出。因此,要获得结果,必须对其进行调整
-if count[x]>counts[x-1]/counts[x+1]/4 else-1
test,如果结果为真,则返回结果,否则返回-1
注意>0
,它与您想要的相反
-用于范围内的x(len(计数[1:-1])
因为我们知道第一个和最后一个值是无关紧要的
-计数[1:-1]
如上所述,最好使用线程安全的列表副本
这应该有效,将为您提供有效的(!=-1)
和无效的(=-1)
计数中每个索引的结果列表
问题是,你能对结果做些什么
您可以测试,例如:(注意结果中的调整的x)
这将为您提供计数的镜像,结果为假或真我有一个看起来不太优雅的解决方案,但我相信它是正确和可理解的。其中包括筛选,因此如果允许值为-1,它也会起作用
我使用3个变量(a、b和I)和3个标志变量(fa、fb和fi),它们显示值是否需要包含在结果集中
['N/A'] + [(x if x!= -1 else False) for x in result] + ['N/A']
def测试(lst):
a、 fa,b,fb,res=None,False,None,False,[]
对于lst中的i:
如果a不是无:
fi=b<(a+i)/4
其他:
fi=真
如果fa:
决议(a)
a、 fa=b,fb
b、 fb=i,fi
如果fa:
决议(a)
决议草案(b)
返回res
打印(测试([10,20,10,25,30]))
=> [10.0, 20.0, 25.0, 30.0]
这个用户(新用户号)刚刚问了他的第一个问题,这对他有什么帮助?我的答案不是最好的。。。
result = [(x+1 if counts[x] > counts[x-1]/counts[x+1]/4 else -1) for x in range(len(counts[1:-1]))]
['N/A'] + [(x if x!= -1 else False) for x in result] + ['N/A']
def test(lst):
a, fa, b, fb, res = None, False, None, False, []
for i in lst:
if a is not None:
fi = b < (a + i)/4
else:
fi = True
if fa:
res.append(a)
a, fa = b, fb
b, fb = i, fi
if fa:
res.append(a)
res.append(b)
return res
print(test([10., 20., 10., 25., 30.]))
=> [10.0, 20.0, 25.0, 30.0]