我需要制作一个函数,该函数将比较列表中的每个值,然后相应地设置每个值。代码如下:
actions = [0, 0, 0, 0.5, 0, 0.3, 0.8, 0, 0.00000000156]
def treshold(element, value):
if element >= value:
element == 1
else:
element == 0
treshold(actions, 0.5)
但是此代码导致以下错误:
TypeError:“列表”和“浮动”实例之间不支持“> =”
我了解此错误的含义,但是我不知道该如何解决。
答案 0 :(得分:0)
如user202729所指出的那样,一种紧凑的方法是使用列表理解。关键是,您需要对列表中的每个条目执行此操作。如果要一次在整个列表上运行它,可以考虑使用numpy
actions = [0, 0, 0, 0.5, 0, 0.3, 0.8, 0, 0.00000000156]
def treshold(element, value):
thresholded_list = [int(a>=value) for a in actions]
return thresholded_list
此函数本质上是
的简写def treshold_long(element_list, value):
thresholded_list = []
for element in element_list:
if element >= value:
thresholded_list.append(1)
else:
thresholded_list.append(0)
return thresholded_list
答案 1 :(得分:0)
感谢user202729,我发现了列表理解功能。
actions = [0, 0, 0, 0.5, 0, 0.3, 0.8, 0, 0.00000000156]
treshold = 0.5
actions = [1 if i>=treshold else 0 for i in actions]
print(actions)
这基本上解决了我的问题。我还要感谢user3235916的有效功能。