for i in range(184): ls=[] for c in range(2928): if c<len(tomp): ls.append(tomp[c]) tomp.remove(tomp[c]) else: ls.append(0) s=0 for i in ls: s+=i avge=[] avg=s/2928 avge.append(avg) print(avge)这个代码怎么修改才可以输出184个平均数
时间: 2024-02-14 08:02:50 浏览: 24
要输出 184 个平均数,可以将 avge 列表定义在循环外面,并在每次循环结束后将平均数添加到 avge 列表中。修改后的代码如下:
```
avge = [] # 定义 avge 列表
for i in range(184):
ls = []
for c in range(2928):
if c < len(tomp):
ls.append(tomp[c])
tomp.remove(tomp[c])
else:
ls.append(0)
s = 0
for i in ls:
s += i
avg = s / 2928
avge.append(avg) # 将平均数添加到 avge 列表中
print(avge) # 输出 avge 列表
```
这样,代码就会输出一个包含 184 个平均数的列表了。
相关问题
avge=[] for i in range(1,185): ls=[] for k,v in room_tomp: if k==i: ls.append(v) s=0 for i in ls: s+=i avg=s/2928 avge.append(avg)print(avge)这个代码为什么输出的avge除了第一个数据是正常值外 其他的都是0?
根据你提供的代码,我发现问题出在变量 `ls` 的定义上。在每次迭代时,你都将 `ls` 重新定义为空列表,而没有将前一轮迭代的数据保存下来。
因此,在计算第二个数时,你的 `ls` 列表中已经没有任何元素了,导致 `s` 的值为0,最终计算出的平均值也是0。后续的计算同理,因此输出的大部分值都是0。
为了解决这个问题,你需要将 `ls` 列表定义在 `for i in range(1,185)` 循环外,以便在每次迭代时保存前一轮的结果。你可以尝试修改代码如下:
```python
avge = []
ls = [] # 将 ls 列表定义在循环外
for i in range(1, 185):
ls.clear() # 每轮迭代前清空 ls 列表
for k, v in room_tomp:
if k == i:
ls.append(v)
s = sum(ls) # 使用 sum 函数计算列表元素的总和
avg = s / len(ls) # 计算平均值时使用列表的长度
avge.append(avg)
print(avge)
```
这样修改后,每轮迭代时都会将数据保存在 `ls` 列表中,计算平均值时也会使用正确的列表长度,输出的结果应该就是正确的了。
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输出都为正常值
可以在每次遍历时重新生成room_tomp,避免其被清空的问题。修改后的代码如下:
```
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])
avge=[]
for i in range(1,185):
ls=[]
room_tomp=zip(room,tomp)
for k,v in room_tomp:
if k==i:
ls.append(v)
s=sum(ls)
avg=s/2928
avge.append(avg)
print(avge)
```
这样就可以得到每个房间的平均温度了。