【问题标题】:How to create a function that takes in a list as input and returns a 1 for each value that is above 0.5 and a 0 if below 0.5? [closed]如何创建一个函数,该函数将列表作为输入并为每个高于 0.5 的值返回 1,如果低于 0.5,则返回 0? [关闭]
【发布时间】:2021-02-07 22:04:43
【问题描述】:

我有一个浮点列表,我想将其转换为包含 1 或 0 的列表,具体取决于它们是否大于某个值。

例子:

list=[0.4,0.6,0.7,0.3,0.2,0.7,0.8]

value=0.5

对于列表中的每个项目,我想将大于 0.5 的值更改为 1,将小于该值的值更改为 0。

我已经尝试过了,但一直得到一个 NoneType 对象,以后我将无法在计算中使用它。

    def fun1(list,value):
            for i in list:
                    if i > value
                            print(int(1))
                    if i < value
                            print(int(0))

我在列表 [0,1,1,0,0,1,1] 中得到了正确的数字;但是,它说类型是无。我希望它们是列表中的整数值,以便以后可以将它们用于计算。我可能做错了什么?有什么建议吗?

【问题讨论】:

标签: python function boolean-operations


【解决方案1】:

这可以使用list comprehension 轻松完成。我强烈建议您阅读并熟悉这个 Pythonic 约定。

例如:

output = [1 if i >= 0.5 else 0 for i in mylist]

输出:

[0, 1, 1, 0, 0, 1, 1]

【讨论】:

    【解决方案2】:
    def greater_than(values, target):
        result = []
        for value in values:
            result.append(int(value > target))
        return result
    
    values = [0.4, 0.6, 0.7, 0.3, 0.2, 0.7, 0.8]
    result = greater_than(values, 0.5)
    

    或者,作为列表理解:

    values = [0.4, 0.6, 0.7, 0.3, 0.2, 0.7, 0.8]
    result = [int(value > 0.5) for value in values]
    

    【讨论】:

      【解决方案3】:

      这是我想出的:

      my_list = [0.2, 23.2, 0.5, 0.4, 1.2, 1, .23,]
      
      def my_function(in_list):
          out_list = []
      
          for number in in_list:
              if number <= 0.5:
                  out_list.append(0)
                  continue
              out_list.append(1)
          
          return out_list
      
      print(my_function(my_list)) # returns [0, 1, 0, 0, 1, 1, 0]
      

      代码分解:

          out_list = []
      

      我们需要将 out_list 初始化为一个数组,以便以后可以在其上使用append()

              if number <= 0.5:
                  out_list.append(0)
                  continue
      

      这将取任何小于或等于零的值,并将其添加到列表中。然后我们使用continue,所以它会回到for循环的开始。
      注意:这也可以在没有continue的情况下完成,而不是elseelif,这个只是我为这个答案选择的方法。

              out_list.append(1)
      

      只有当数字大于 0.5 时才会调用它。它将 1 加到 out_list

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-18
        • 1970-01-01
        • 1970-01-01
        • 2016-07-30
        • 2017-03-04
        • 1970-01-01
        相关资源
        最近更新 更多