【问题标题】:How do you filter in Python using a function?如何使用函数在 Python 中进行过滤?
【发布时间】:2021-04-26 01:19:27
【问题描述】:

我第一次使用过滤器函数,并使用一个函数从一个名为 num_list 的元组中删除 del_num。但是,它没有做我想要的。我正在取回原始的 num_list 值。感谢有关如何使其发挥作用的任何想法。

num_list = [1,2,3,4,5,8,24,24,54,78]
del_num = 24

def filter_list(num_list, del_num):
    new_num =[]
    for v in num_list:
        if (num_list) == (del_num):
            return FALSE
        else:
            new_num.append(v)
    return new_num

result = filter_list(num_list,del_num)
print(result)

【问题讨论】:

    标签: python function filter


    【解决方案1】:

    对代码的整体结构进行最小的更改,但进行一些更改以使其正常工作:

    num_list = [1,2,3,4,5,8,24,24,54,78]
    del_num = 24
    
    def filter_list(num_list, del_num):
        new_num = []
        for v in num_list:
            if v != del_num:
                new_num.append(v)
        return new_num
    
    result = filter_list(num_list,del_num)
    print(result)
    

    如果满足条件,您的代码的return False 部分将跳出函数并返回False,这不是您想要的。此外,您所做的相等检查是将原始列表与要删除的数字进行比较。你应该完成if v == del_num。鉴于所有动作都发生在 else 块中,最容易将等式变为不等式并完全摆脱 else 块。

    另请注意,布尔值 False 拼写为 False,而不是 FALSE(与其他一些语言不同)。

    【讨论】:

    • 谢谢。 v! 是什么意思?做?假设可以将元组更改为列表并使其也可以工作。
    • != 是不等式运算符 - 与 == 相反。 v != del_num 询问单个列表项是否不等于 del_num。我不确定你所说的更改元组是什么意思 - 代码中没有任何元组。
    • 澄清我的问题。如果我将输入值更改为字符串,此函数是否会初始化。我试过了,还是不行。
    • 该函数应该仍然可以工作,但可能无法达到您的预期:filter_list('aabcda', 'a') 返回['b', 'c', 'd']
    【解决方案2】:

    一种方法是使用列表推导

    num_list = [1,2,3,4,5,8,24,24,54,78]
    del_num = 24
    
    def filter_list(num_list,del_num):
        return [num for num in num_list if num != del_num]
    
    filtered_list = filter_list(num_list,del_num)
    print(filtered_list)
    

    【讨论】:

      【解决方案3】:

      这里就是你要找的东西:

      num_list = [1,2,3,4,5,8,24,24,54,78]
      del_num = 24
      

      def filter_list(num_list, del_num):

       new_num =[]
      
      for v in num_list:
          if (v) == (del_num):
              pass
          else:
              new_num.append(v)
      return new_num
      

      结果 = filter_list(num_list,del_num)

      打印(结果)

      【讨论】:

        猜你喜欢
        • 2020-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多