Перебор списка, разбитого на куски - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть чанкованный список, который содержит следующее:

ChunkedList = ['2018-12-14 15:00:00', 'A : aa1', 'B: bb2', 'C: cc3'] ['2018-12-14 16:00:00', 'A : aa2', 'B: bb2','C: cc1']['2018-12-14 17:00:00', 'A : aa3', 'B: bb1','C: cc3']['2018-12-14 18:00:00', 'A : aa3', 'B: bb1','C: cc3']['2018-12-14 19:00:00', 'A : aa3', 'B: bb1','C: cc3']['2018-12-14 20:00:00', 'A : aa3', 'B: bb1','C: cc3']

Если я запускаю следующий код в не ченкованном списке, я получаю отдельные строки, которые включают соответствующие времена.

import datetime
hours = [(datetime.time(i).strftime('%H:%M:%S')) for i in range(6,18)]
WFList = [line for line in FullList if any(hour in line for hour in hours)] 

Вот так:

WFList= ['2018-12-14 15:00:00','2018-12-14 16:00:00','2018-12-14 17:00:00']

Мой текущий код для чанкованного списка:

for chunk in ChunkedList:
    if any(hour in chunk for hour in hours):
        print(chunk) 

Ничего не возвращается.Я хотел бы получить список с чанками, содержащими время в моем диапазоне, как показано ниже:

IdealList = ['2018-12-14 15:00:00', 'A : aa1', 'B: bb2', 'C: cc3'] ['2018-12-14 16:00:00', 'A : aa2', 'B: bb2','C: cc1']['2018-12-14 17:00:00', 'A : aa3', 'B: bb1','C: cc3']

Я прочитал довольно много постов, касающихся итераций и чанкованных списков, и озадачен.Любая помощь приветствуется!Спасибо.

1 Ответ

0 голосов
/ 15 декабря 2018

Я считаю, что проблема в том, что hours содержит строго время.Пока ваш список содержит как date, так и time.Вам нужно использовать метод split для строк, чтобы проанализировать ваш список.Попробуйте это:

import datetime

hours = [(datetime.time(i).strftime('%H:%M:%S')) for i in range(6,18)]

ChunkedList = [['2018-12-14 15:00:00', 'A : aa1', 'B: bb2', 'C: cc3'],
               ['2018-12-14 16:00:00', 'A : aa2', 'B: bb2','C: cc1'],
               ['2018-12-14 17:00:00', 'A : aa3', 'B: bb1','C: cc3'],
               ['2018-12-14 18:00:00', 'A : aa3', 'B: bb1','C: cc3'],
               ['2018-12-14 19:00:00', 'A : aa3', 'B: bb1','C: cc3'],
               ['2018-12-14 20:00:00', 'A : aa3', 'B: bb1','C: cc3']]

result = [big_list for big_list in ChunkedList if big_list[0].split()[1] in hours]
# [['2018-12-14 15:00:00', 'A : aa1', 'B: bb2', 'C: cc3'], ['2018-12-14 16:00:00', 'A : aa2', 'B: bb2', 'C: cc1'], ['2018-12-14 17:00:00', 'A : aa3', 'B: bb1', 'C: cc3']]

big_list[0].split()[1] смотрит только на время, чтобы увидеть, находится ли он в пределах диапазона, указанного в hours.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...