假设我有一个列表如下:
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)
但它看起来如此冗长且难以辨认,所以任何人都有更好的方法来检测它?
此外,我的列表包含负数和负数字字符串,我该怎么办?
答案 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']