如何检查列表中的元素"是" Python中的数字?

时间:2016-12-15 05:50:28

标签: python string

这是一个简单的代码:

s = ['-1', '2', '+']
print([x.isnumeric() for x in s])
print([x.isdigit() for x in s])

输出

[False, True, False]
[False, True, False]

我希望:

[True, True, False]

4 个答案:

答案 0 :(得分:4)

它不是一个班轮,但这有效。

def isnum(x):
    try:
        float(x)
        return True
    except ValueError:
        return False

s = ['-1', '2', '+']
print([isnum(x) for x in s])

答案 1 :(得分:1)

您还可以使用正则表达式模式来匹配负数,正数和十进制数:

>>> import re
>>> s = ['-1', '2', '+']
>>> [re.match('^(-|\+)?\d+(.\d+)?', n) is not None for n in s]
[True, True, False]
>>> 

答案 2 :(得分:0)

[x.isnumeric() or (x[0] == '-' and x[1:].isnumeric()) for x in s]

答案 3 :(得分:0)

使用for循环和替换,您可以轻松检查列表中的值是否为数字。

示例:

>>> list = ['-1','2','+']
>>> result=[]
>>> for i in list:
...         if '-' in i:
...                 result.append(i.replace('-','').isdigit())
...         else:
...                 result.append(i.isdigit())
... 
>>> print result
[True, True, False]

输出:

{{1}}

对于数字是浮点数或小数的情况,您可以轻松添加更多if语句。