首页 > 解决方案 > 遍历分解成块的列表

问题描述

我有一个分块列表,其中包含以下内容:

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']

我阅读了很多关于迭代和分块列表的帖子,并被难住了。任何和所有的帮助表示赞赏!谢谢你。

标签: pythonlistfor-loop

解决方案


我相信问题在于hours严格包含时间。虽然您的列表同时包含datetime。您需要使用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


推荐阅读