Filter a list in python get integers

前端 未结 4 1848
花落未央
花落未央 2020-11-30 14:48

I have a list:

[\'Jack\', 18, \'IM-101\', 99.9]

How do I filter it to get only the integers from it??

I tried

map(i         


        
相关标签:
4条回答
  • 2020-11-30 15:27

    Use filter:

    filter(lambda e: isinstance(e, int), x)
    
    0 讨论(0)
  • 2020-11-30 15:38

    In case the list contains integers that are formatted as str, the list comprehension would not work.

    ['Jack', '18', 'IM-101', '99.9']
    

    I figured out the following alternative solution for that case:

    list_of_numbers = []
    for el in your_list:
        try:
            list_of_numbers.append(int(el))
        except ValueError:
            pass
    

    You can find more details about this solution in this post, containing a similar question.

    0 讨论(0)
  • 2020-11-30 15:38

    Use list comprehension

    >>> t = ['Jack', 18, 'IM-101', 99.9]
    >>> [x for x in t if type(x) == type(1)]
    [18]
    >>> 
    

    map(int, x) throws an error

    map function applies int(t) on every element of x.

    This throws an error because int('Jack') will throw an error.

    [Edit:]

    Also isinstance is purer way of checking that it is of type integer, as sukhbir says.

    0 讨论(0)
  • 2020-11-30 15:39
    >>> x = ['Jack', 18, 'IM-101', 99.9]
    >>> [e for e in x if isinstance(e, int)]
    [18]
    
    0 讨论(0)
提交回复
热议问题