使用阈值操作Python列表

时间:2019-08-03 09:02:39

标签: python-3.x list

我需要制作一个函数,该函数将比较列表中的每个值,然后相应地设置每个值。代码如下:

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:“列表”和“浮动”实例之间不支持“> =”

我了解此错误的含义,但是我不知道该如何解决。

2 个答案:

答案 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的有效功能。