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'] |