Какой эффективный способ сортировки времени в формате мин: сек, без импорта каких-либо модулей? - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть таблица строк, где в последнем столбце указано «время», как показано ниже:

['7:15','6:27','5:24','2:50','4:39','5:11','2:56','4:29','3:17','3:04']

Я хотел бы представить самый большой и самый маленький из этого списка, с ограничением , которое означает, что я не могу импортировать любые модули (это не мой выбор).

Хотя я думал о сравнении первого символа каждого элемента как целого, тогда, если есть связь, глядя на 2-е число для сравнения, кажется, что может быть лучший способ?

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Традиционный метод - это для использования импортированного модуля, например datetime.timedelta от stlib. Однако, учитывая ваши ограничения, вы можете вычислять минуты в каждой строке «дельта времени» и затем сортировать:

def sorter(x):
    hrs, mins = map(int, x.split(':'))
    return 60*hrs + mins

res = sorted(L, key=sorter)

print(res)

['2:50', '2:56', '3:04', '3:17', '4:29', '4:39', '5:11', '5:24', '6:27', '7:15']
0 голосов
/ 17 ноября 2018

Вы можете использовать метод list.sort со своей собственной ключевой функцией:

l = ['7:15','6:27','5:24','2:50','4:39','5:11','2:56','4:29','3:17','3:04']
l.sort(lambda s: [int(i) for i in s.split(':')])

, который изменяет l на:

['2:50', '2:56', '3:04', '3:17', '4:29', '4:39', '5:11', '5:24', '6:27', '7:15']
...