如何检测列表的非数量?

时间:2015-10-09 02:42:44

标签: python list

假设我有一个列表如下:

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

该列表包含类似数字的字符串,数字类型的数字和字符串。

我认为类似数字的字符串可以转换数字,因此它可以看作数字。

这是我的方法:

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)

但它看起来如此冗长且难以辨认,所以任何人都有更好的方法来检测它?

此外,我的列表包含负数和负数字字符串,我该怎么办?

3 个答案:

答案 0 :(得分:6)

仅适用于正整数:

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

负面消息:

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

对于小数和负数:

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

答案 1 :(得分:2)

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

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

print detect(a)

答案 2 :(得分:1)

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

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

['t']