Python高效生成长度为24的列表,start~end范围值为1,其他为0
您想创建长度为24的列表,其中特定范围内的值(start~end)为1,其他为0。例如,给定数据:
data = [{'end': 12, 'start': 10, 'bikeNum': 100},
{'end': 16, 'start': 14, 'bikeNum': 500},
{'end': 20, 'start': 18, 'bikeNum': 400},
{'end': 24, 'start': 22, 'bikeNum': 200}]
希望将每个字典的'start'到'end'范围内的值标记为1,其他位置为0,可以使用Python列表推导式来高效地完成这个任务。
data = [{'end': 12, 'start': 10, 'bikeNum': 100},
{'end': 16, 'start': 14, 'bikeNum': 500},
{'end': 20, 'start': 18, 'bikeNum': 400},
{'end': 24, 'start': 22, 'bikeNum': 200}]
result = [1 if i['start'] <= j <= i['end'] else 0 for i in data for j in range(1, 25)]
这段代码首先定义一个名为data的列表,包含了您提供的数据。然后,使用列表推导式生成了一个名为result的列表。在推导式中,我们遍历data列表中的每个字典对象,并使用range(1, 25)生成了一个从1到24的范围。接下来,使用条件表达式判断当前范围是否在字典对象的start和end之间,如果是,则将对应位置的元素设置为1,否则设置为0。最终,result列表将包含长度为24的列表,其中start~end范围内的元素为1,其他元素为0。
使用列表推导式可以简洁高效地生成所需列表,避免了繁琐的循环操作,是处理这类数据的推荐方式。
原文地址: https://www.cveoy.top/t/topic/hzER 著作权归作者所有。请勿转载和采集!