import numpy as np import pandas as pd import matplotlib.pyplot as mp df=pd.read_excel('C:/Users/86147/OneDrive/文档/66666.xlsx',header=0,usecols=(1,)) mylist1=df.values.tolist() room=[] for i in mylist1: room.append(i[0]) df=pd.read_excel('C:/Users/86147/OneDrive/文档/66666.xlsx',header=0,usecols=(2,)) mylist1=df.values.tolist() tomp=[] for i in mylist1: tomp.append(i[0]) room_tomp=zip(room,tomp) avge=[] ls=[] for i in range(1,185): ls.clear() for k,v in room_tomp: if k==i: ls.append(v) s=sum(ls) avg=s/2928 avge.append(avg) print(avge)这个代码为什么avge的输出出了第一个数据是正常值,其他的都为0?
时间: 2024-02-16 07:02:16 浏览: 125
import numpy as np import matplotlib.pyplot as plt import math
根据你的代码,avge中第一个值是通过对编号为1的房间温度求平均得到的,而其他值都是通过对room_tomp中的值进行遍历得到的,但是room_tomp只在第一次遍历时有效,因为zip函数返回的是一个迭代器,遍历一次后就会被清空,所以在第二次遍历时room_tomp已经为空,导致ls中没有任何元素,最终得到的平均温度为0。为了解决这个问题,你可以在每次遍历时重新生成room_tomp,或者在第一次生成room_tomp后将其转换为列表,避免其被清空的问题。
阅读全文