Python实现列表滑动窗口求和后统计相邻值比较的布尔结果次数
Python实现代码及说明
- 首先修正现有代码的变量命名问题:不要用
list作为自定义变量名,这是Python内置关键字,会导致后续调用内置list功能时报错 - 补充滑动窗口求和后的比较逻辑、布尔值统计逻辑
完整可运行代码如下:
# 读取数据部分 with open("data.txt") as f: data = [int(line.strip()) for line in f] def funcAOC2(): # 1. 生成长度为3的滑动窗口和列表 window_sums = [] for i in range(len(data) - 2): current_sum = data[i] + data[i+1] + data[i+2] window_sums.append(current_sum) # 2. 生成布尔比较列表,同时统计True/False数量 bool_list = [] true_count = 0 false_count = 0 for j in range(1, len(window_sums)): # 判断前一个值是否小于后一个值 compare_res = window_sums[j-1] < window_sums[j] bool_list.append(compare_res) if compare_res: true_count += 1 else: false_count += 1 # 输出结果 print(f"布尔结果列表:{bool_list}") print(f"true: {true_count} false: {false_count}") return true_count, false_count # 调用函数执行 funcAOC2()
如果需要更简洁的写法,也可以用列表推导式简化逻辑:
# 简化版实现 with open("data.txt") as f: data = [int(line.strip()) for line in f] window_sums = [sum(data[i:i+3]) for i in range(len(data)-2)] bool_res = [window_sums[i] < window_sums[i+1] for i in range(len(window_sums)-1)] true_cnt = bool_res.count(True) false_cnt = len(bool_res) - true_cnt print(f"true: {true_cnt} false: {false_cnt}")
内容的提问来源于stack exchange,提问作者user17453888
相关产品推荐
相关产品推荐

