关于python:如何检测列表中的非数字?

How to detect non-number of the list?

本问题已经有最佳答案,请猛点这里访问。

假设我有如下列表:

1
a = ['111', 213, 74, '99', 't', '88', '-74', -74]

列表包含数据类型的数字,如字符串、数字和字符串。

我认为数字就像字符串可以转换数字一样,所以它可以看作一个数字。

这是我的方法:

1
2
3
4
5
6
7
8
9
10
11
a = ['111', 213, 74, '99', 't', '88', '-74', -74]

def detect(list_):
    for element in list_:
        try:
            int(element)
        except ValueError:
            return False
    return True

print detect(a)

但它看起来很长,不可读,所以有人有更好的方法来检测它吗?

另外,我的列表包含负数和负数,比如字符串,我该怎么做?


仅对于正整数:

1
not all(str(s).isdigit() for s in a)

否定词:

1
not all(str(s).strip('-').isdigit() for s in a)

对于小数和负数:

1
not all(str(s).strip('-').replace('.','').isdigit() for s in a)


1
2
3
4
5
6
7
8
9
10
a = ['111', 213, 74, '99', 't', '88']

def detect(list_):
    try:
        map(int,list_)
        return True
    except ValueError:
        return False

print detect(a)


1
2
3
4
5
a = ['111', 213, 74, '99', 't', '88']

print([x for x in a if not str(x).isdigit()])

['t']