我正在尝试以下代码,但现在我的教授希望对此进行一些小的更新。我有一个标签列表
[good,noise,mixed,silent]
这些值的组合构成了诸如此类的新列表。
[good,good,noise,noise,good,good,silent]
我的第一个问题是,如果前两个值也都很好,我就必须将坏或杂音转换为好。
我尝试了以下代码。现在他要求我将2作为窗口并将其作为变量传递。基本上,如果win = 3表示前面的3个值是好的,则应将噪声或混合值替换为good。
如果win = 5,则如果标签的前5个值是好的,那么当前的杂音或混合标签应该变好。
list10=['silent','good','good','good','noise','good','good','mixed','good','good','good','silent','good','mixed']
def predUpdate(new_list):
update_list=new_list.copy()
for a in range(len(new_list) - 2):
if (new_list[a] == 'good' and new_list[a + 1] == 'good' and (
new_list[a + 2] == 'mixed_noise' or new_list[a + 2] == 'noise')):
update_list[a + 2] = 'good'
return update_list
print (list10)
print (predUpdate(list10))
初始输出:
['silent', 'good', 'good', 'good', 'noise', 'good', 'good', 'mixed', 'good', 'good', 'good', 'silent', 'good', 'mixed']
====================
['silent', 'good', 'good', 'good', 'good', 'good', 'good', 'good', 'good', 'good', 'good', 'silent', 'good', 'mixed']
====================
这是针对窗口值2(2个好的值)的。我该如何对3或5或给定的任意随机值执行相同操作?
答案 0 :(得分:2)
你在这里
list10=['silent','good','good','good','noise','good','good','mixed','good','good','good','silent','good','mixed']
def predUpdate(new_list,k):
update_list=new_list.copy()
for a in range(len(new_list) - k):
if (new_list[a:a+k] == k*['good'] and new_list[a+k]!='silent'):
update_list[a + k] = 'good'
return update_list
print (list10)
print (predUpdate(list10,3))
答案 1 :(得分:0)
最佳方法:
次优方式(但更接近原始解决方案):
i
)的索引N
个元素,并且该元素混合或不正确:请查看窗口中以i-1
结尾的所有元素是否都是"good"
。您可以使用all
函数:all(x[j] == "Good" for j in range(i - win, i))
非常轻松地完成此操作。如果是这样,请将元素更改为"good"