У меня есть список строк, в которых есть числа в качестве суффиксов. Я пытаюсь извлечь наибольшее число, чтобы увеличить его на 1. Вот что я придумал, но мне интересно, есть ли более быстрый способ сделать это:
data = ["object_1", "object_2", "object_3", "object_blah", "object_123asdfd"]
numbers = [int(obj.split("_")[-1]) for obj in data if obj.split("_")[-1].isdigit()] or [0]
print sorted(numbers)[-1] + 1 # Output is 4
Несколько условий:
- Вполне возможно, что суффикс вовсе не является числом, и его следует пропустить.
- Если ввод недопустим, то на выходе должно быть 1 (поэтому я иметь
or [0]
) - Нет Python 3 решения, только 2.7.
Может быть, некоторые маги регулярных выражений c быстрее найдут наибольшее число для увеличения? Мне не нравится тот факт, что мне приходится делиться дважды.
Изменить
Я провел несколько тестов для текущих ответов, используя 100 итераций данных, содержащих 10000 элементов :
- Метод Алекса Нонейма: 1,65 с
- Метод Сушанта: 1,95 с
- Баладжи Амбре sh Метод: 2,12 с
- Мой оригинал метод: 2.16s
Я принял ответ, но не стесняйтесь вносить свой вклад.