У меня есть следующий список, и я пытаюсь заменить любое значение, которое начинается с 23:
на 00:00:00.00
tc = ['00:00:00.360',
'00:00:00.920',
'00:00:00.060',
'00:00:02.600',
'23:59:55.680',
'00:00:05.960',
'00:00:01.040',
'00:00:01.140',
'00:00:01.060',
'00:00:01.480',
'00:00:00.140',
'00:00:00.280',
'23:59:59.800',
'00:00:01.200',
'00:00:00.400',
'23:59:59.940',
'00:00:01.220',
'00:00:00.380']
Я могу получить то, что мне нужно, используя регулярное выражение,
tc = [re.sub(r'(\b23:)(.*)',r'00:00:00.00', item) for item in tc]
и это дает мне ожидаемый результат, как показано ниже,
['00:00:00.360',
'00:00:00.920',
'00:00:00.060',
'00:00:02.600',
'00:00:00.00',
'00:00:05.960',
'00:00:01.040',
'00:00:01.140',
'00:00:01.060',
'00:00:01.480',
'00:00:00.140',
'00:00:00.280',
'00:00:00.00',
'00:00:01.200',
'00:00:00.400',
'00:00:00.00',
'00:00:01.220',
'00:00:00.380']
Но если я использую приведенный ниже метод без использования регулярных выражений, то результат не тот, который я ожидаю,
tc = [item.replace(item, '00:00:00.00') for item in tc if item.startswith('23:')]
Результат:
['00:00:00.00', '00:00:00.00', '00:00:00.00']
Результирующий список содержит только замененные элементы, а не весь список. Как использовать вышеуказанный метод, чтобы получить полный список?