2016-12-15 1 views
0

Вот простой код:Как проверить элементы в списке «есть» в 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] 
+3

Возможно, вместо этого можно использовать функцию, которая пытается преобразовать в 'int' и ловит любые исключения, возвращая False в случае исключения и True в противном случае. –

ответ

4

Сво не один лайнер, но это работает.

def isnum(x): 
    try: 
     float(x) 
     return True 
    except ValueError: 
     return False 

s = ['-1', '2', '+'] 
print([isnum(x) for x in s]) 
+5

Я бы использовал 'float' вместо' int'; он вернет true для любого значения, которое Python распознает как число (int, float, научная нотация), а не только целые числа. –

+0

Упрощенный с тех пор, как я работал над тем же решением: D –

+3

_ «Это не один лайнер, но это работает» _ - Я бы каждый день читал четкий читаемый код на одном слоте. –

0
[x.isnumeric() or (x[0] == '-' and x[1:].isnumeric()) for x in s] 
+0

Как насчет чисел, таких как '+ 1' или' + 2'? –

+1

Угадай, что ты мог сделать. 'x [0] в ('-', '+')' или аналогично. –

1

Вы также можете использовать шаблон регулярного выражения, чтобы соответствовать отрицательные, положительные и десятичные числа:

>>> import re 
>>> s = ['-1', '2', '+'] 
>>> [re.match('^(-|\+)?\d+(.\d+)?', n) is not None for n in s] 
[True, True, False] 
>>> 
0

Использование для цикла, и заменить можно легко проверить значения в списке, являются ли цифры или нет.

Пример:

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] 

В тех случаях, когда число с плавающей точкой или десятичной, вы можете легко добавить больше, если заявления.