【问题标题】:Splitting a list into numbers only仅将列表拆分为数字
【发布时间】:2020-05-25 10:50:37
【问题描述】:

我正在尝试编写一个函数,它接受一个包含数字和字符串的列表,并只返回一个包含数字的列表。我编写的代码如下所示,但它一直抛出错误,我无法理解我做错了什么。希望你能帮忙。

lst = [99, 'no data', 95, 94, 'no data'] 

def foo(lst):
    return [x for x in lst if x.isdigit()] 

print(foo(lst))

【问题讨论】:

  • int 没有属性isdigit,所以你不能调用它来确定它是否是一个数字。尝试类似:[x for x in lst if isinstance(x, int)]
  • 如果您只想分隔 intstring,或者您希望分隔数字的 string,请提及 .. 因为在给定的示例中,有些是整数,有些是字符串跨度>
  • 噢,我明白了。非常感谢大家的帮助,真的很感激!

标签: python


【解决方案1】:
lst = [99, 'no data', 95, 94, 'no data']

def foo(lst):
    return [x for x in lst if isinstance(x, int)]

print(foo(lst))

【讨论】:

    【解决方案2】:
    lst = [99, 'no data', 95, 94, 'no data'] 
    
    def foo(lst):
        return [x for x in lst if isinstance(x,str)] 
    
    print(foo(lst))
    

    【讨论】:

      【解决方案3】:
      lst = [99, 'no data', 95, 94, 'no data'] 
      
      def isDigit(n):
          return type(n) is int
      def foo(lst):
          return [x for x in lst if isDigit(x)] 
      
      print(foo(lst))
      

      【讨论】:

        【解决方案4】:
        lst = [99, 'no data', 95, 94, 'no data'] 
        
        def foo(lst):
            return [x for x in lst if type(x)==int] 
        
        print(foo(lst))
        

        【讨论】:

        • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常质量更高,对未来的访问者更有用,并且更有可能吸引点赞。
        【解决方案5】:

        错误是因为isdigit() 仅适用于string

        lst = [99, 'no data', 95, 94, 'no data']
        
        def foo(lst):
            return [lst[x] for x in range(0,len(lst)) if str(lst[x]).isdigit() ]
        
        
        print(foo(lst))
        

        输出:

        [99, 95, 94]
        

        【讨论】:

          【解决方案6】:

          这个想法是检查每个元素的类型是否为int。如 cmets 中所述,isDigit 不适用于 int 类型的元素。

          lst = [99, 'no data', 95, 94, 'no data']
          list=[]
          def foo(lst):
              return [x for x in lst if type(x)==int]
          
          print(foo(lst))
          

          输出:

          [99, 95, 94]
          

          【讨论】:

          • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常质量更高,对未来的访问者更有用,并且更有可能吸引点赞。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-19
          • 1970-01-01
          • 1970-01-01
          • 2018-10-24
          • 2023-02-11
          相关资源
          最近更新 更多