Поскольку числа являются целыми числами, вы можете получить их, используя метод str
isdigit
, рассмотрите следующий пример:
words = ['abc', '123', 'xyz', '1', '999']
numbers = [i for i in words if i.isdigit()]
print(numbers) # ['123', '1', '999']
, тогда вы можете указать max
с int
как key
следующим образом:
print(max(numbers, key=int)) # 999
не забудьте НЕ сравнить strs
представляющих числа, поскольку это может дать неожиданные результаты, например:
print(max(['9000','999'])) # 999
обратите внимание, что ValueError
произойдет, если исходный список (words
) не содержат никаких чисел.
Редактировать: я забыл заметить, что выше работает исключительно для неотрицательных целых чисел, чтобы разрешить также отрицательные целые, вы можете написать функцию для проверки этого следующим образом:
def represent_int(x):
if not x: # empty str
return False
if x[0] == '-': # leading - that is negative integer
return x[1:].isdigit()
return x.isdigit()
и используйте его следующим образом:
numbers = [i for i in words if represent_int(i)]
обратите внимание, что я предполагаю, что represent_int
будет передаваться исключительно с str
с.