#python #list
#питон #Список
Вопрос:
Я хочу удалить ]
из каждого элемента в этом списке (а затем сравнить часы и получить среднее время между каждым часом). Как я могу это сделать? Список выглядит следующим образом:
['21:35:32]', '21:35:40]', '21:36:04]', '21:37:24]', '21:37:33]', '21:37:47]', '17:26:30]', '17:26:33]', '17:26:40]'
, и т.д…
До сих пор я кодировал это:
getfile = open('_Echat.txt', 'r', errors="ignore")
read = getfile.read()
bigstring = ''.join(read)
result = [line.split(' ') for line in bigstring.split('[')]
horas = []
for x in result:
if len(x) > 2:
horas.append(x[1])
print(horas)
Ответ №1:
Вопрос не ясен. Я не знаю, что вы имеете в виду, сравнивая часы. Но я написал код, который выдаст вам список часов.
#use this on read data from file
hours = [int(read[i].replace(']', '').split(':')[0]) for i in range(len(read))]
#To get minutes and seconds use `[1]` and `[2]` respectively in the above code
это вывод для заданных данных
[21, 21, 21, 21, 21, 21, 17, 17, 17]
Ответ №2:
Есть два очень простых решения для понимания списка:
listing = ['21:35:32]', '21:35:40]', '21:36:04]', '21:37:24]', '21:37:33]', '21:37:47]', '17:26:30]', '17:26:33]', '17:26:40]']
#replace character you do not want - better option
newlist = [x.replace(']', '') for x in listing]
#select only wanted part of string you need - only if all are similar and you know len
newlist2 = [x[0:8] for x in listing]
Оба заканчиваются списком:
['21:35:32', '21:35:40', '21:36:04', '21:37:24', '21:37:33', '21:37:47', '17:26:30', '17:26:33', '17:26:40']
Таким образом, вы получаете строку времени, только для достижения часов, второй подход прост в использовании:
hours = [int(x[0:2]) for x in listing]
#[21, 21, 21, 21, 21, 21, 17, 17, 17]
Это немного проще, чем в другом ответе, вам не нужно заботиться об остальной части строки (на случай, если вам не нужно знать минуты и т.д.)
И, наконец, среднее:
import statistics
print(round(statistics.mean(hours)))
#20