python3中的懒切片

时间:2019-08-27 11:08:51

标签: python list

我在python中有一个庞大的列表(〜1_800_000个项目),该列表是使用map()函数从大约1000个JSON文件构造而成的。我想检查一些头项,以确保脚本正常运行。我正在这样做:

items = map(lambda file: load_json(file), file_list)
print(list(items)[:5])

将地图转换为列表大约需要5到10秒钟,是否有可能只花费很少的第一项而无需将map的结果转换为list

1 个答案:

答案 0 :(得分:4)

您可以这样做:

items = map(lambda file: load_json(file), file_list)
print([next(items) for _ in range(5)])

或使用itertools.islice,它有一点好处,即如果少于五个,它不会失败:

items = map(lambda file: load_json(file), file_list)
print(list(itertools.islice(items, 5)))

请注意,这两个元素都消耗items中的第一个元素,因此,如果您要“窥视”这些元素然后获取整个列表,则需要先添加这些元素。