下面是簡單的代碼:如何檢查列表中的元素「是」Python中的數字?
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]
下面是簡單的代碼:如何檢查列表中的元素「是」Python中的數字?
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]
它是一種不是一個襯墊,但是這個工程。
def isnum(x):
try:
float(x)
return True
except ValueError:
return False
s = ['-1', '2', '+']
print([isnum(x) for x in s])
我會使用'float'而不是'int';它將返回任意值爲Python的數字(int,float,科學記數法)而不是整數。 –
Upvoted,因爲我正在研究相同的解決方案:D –
_「它不是一個班輪,但它有效」_ - 我會在任何一天都用一行代碼讀取清晰的可讀代碼。 –
[x.isnumeric() or (x[0] == '-' and x[1:].isnumeric()) for x in s]
數字如「+ 1」或「+ 2」怎麼辦? –
猜你可以做。 (' - ','+')'或類似的'x [0]。 –
您也可以使用正則表達式模式匹配陰性,陽性,十進制數:
>>> import re
>>> s = ['-1', '2', '+']
>>> [re.match('^(-|\+)?\d+(.\d+)?', n) is not None for n in s]
[True, True, False]
>>>
使用for循環和更換,你可以很容易地檢查在列表中的值是否是數字或不。
實施例:
list = ['-1','2','+']
result=[]
for i in list:
if '-' in i:
result.append(i.replace('-','').isdigit())
else:
result.append(i.isdigit())
輸出:
>>> 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]
對於情況的數量是一個浮動或十進制,可以很容易地添加更多的if語句。
也許改爲使用一個函數,試圖轉換爲'int'並捕獲任何異常,在異常情況下返回False,否則返回True。 –