Python:尝试创建两个函数。一个遍历二维列表的列,而另一个遍历行
我引用Python:尝试创建两个函数。一个遍历二维列表的列,而另一个遍历行,python,arrays,python-3.x,for-loop,multidimensional-array,Python,Arrays,Python 3.x,For Loop,Multidimensional Array,我引用main()来测试它。最后,它告诉我TypeError:列表索引必须是整数或片,而不是NoneType 那么,什么是合适的占位符,而不是None?还有,我做的for循环对吗 请让我知道。这里的新手(这是很明显的)。您确实使用了无作为索引。相反,对于average_hour,您应该迭代一天中的所有小时(而不是无小时)。与平均日类似: def average_hour (temps, hour): i = 0 for i in temps[None][i]:
main()
来测试它。最后,它告诉我TypeError:列表索引必须是整数或片,而不是NoneType
那么,什么是合适的占位符,而不是None
?还有,我做的for循环对吗
请让我知道。这里的新手(这是很明显的)。您确实使用了
无
作为索引。相反,对于average_hour
,您应该迭代一天中的所有小时(而不是无小时)。与平均日类似
:
def average_hour (temps, hour):
i = 0
for i in temps[None][i]:
total = total + temps[None][i]
average = total/(i+1)
return average
def average_day (temps, day):
i = 0
for i in temps[i][None]:
total = total + temps[i][None]
average = total/(i+1)
return average
def main():
temps = [
[73.0, 73.9, 73.0, 73.9, 73.9, 73.9, 73.0, 71.1, 71.1, 71.1, 70.0, 70.0, 70.0, 70.0, 70.0, 71.1, 71.1, 71.6, 71.1, 71.1, 70.0, 71.1, 70.0, 71.1],
[63.0, 63.0, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 61.0, 62.6, 62.6, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1],
[68.0, 68.0, 69.1, 69.1, 69.1, 73.9, 75.0, 75.9, 81.0, 81.0, 82.0, 84.0, 80.1, 78.1, 75.9, 77.0, 80.1, 81.0, 82.0, 81.0, 81.0, 79.0, 78.1, 78.1],
[78.1, 78.1, 78.1, 77.0, 77.0, 77.0, 75.9, 75.0, 75.2, 75.9, 73.9, 73.9, 73.9, 73.0, 73.0, 73.0, 73.9, 73.9, 73.0, 73.4, 73.0, 73.0, 75.0, 75.0],
[71.1, 71.1, 70.0, 70.0, 70.0, 70.0, 70.0, 70.0, 70.0, 70.0, 69.1, 69.1, 69.1, 69.1, 68.0, 66.9, 66.0, 66.0, 66.0, 66.0, 66.0, 66.0, 64.9, 64.9],
[61.0, 61.0, 61.0, 61.0, 61.0, 61.0, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 61.0, 61.0, 61.0, 64.9, 64.9],
[57.0, 55.0, 55.0, 55.0, 54.0, 54.0, 55.0, 54.0, 55.0, 55.9, 55.9, 55.0, 55.0, 57.0, 62.1, 66.9, 71.1, 73.0, 75.0, 77.0, 78.1, 78.1, 78.1, 75.9],
[62.1, 61.0, 61.0, 60.1, 60.1, 59.0, 59.0, 61.0, 66.9, 72.0, 75.9, 78.1, 78.1, 78.1, 78.1, 78.1, 77.0, 75.0, 72.0, 71.1, 70.0, 68.0, 66.0, 64.0],
[63.0, 62.1, 61.0, 61.0, 59.0, 60.1, 59.0, 60.1, 66.9, 73.9, 75.9, 78.1, 81.0, 79.0, 81.0, 79.0, 79.0, 75.9, 73.0, 72.0, 71.1, 71.1, 71.1, 70.0],
[70.0, 69.1, 70.0, 69.1, 69.1, 69.1, 69.1, 69.1, 68.0, 68.0, 68.0, 70.0, 69.8, 70.0, 70.0, 70.0, 71.1, 70.0, 70.0, 71.1, 71.1, 71.1, 73.0, 73.0],
[61.0, 61.0, 60.1, 59.0, 59.0, 59.0, 57.9, 59.0, 59.0, 60.1, 61.0, 61.0, 63.0, 66.9, 66.0, 71.1, 71.1, 73.9, 72.0, 75.9, 75.0, 75.9, 75.9, 75.0],
[62.1, 62.1, 62.1, 61.0, 62.1, 61.0, 62.1, 62.1, 63.0, 62.1, 61.0, 61.0, 61.0, 61.0, 64.0, 64.9, 66.0, 66.0, 68.0, 70.0, 66.0, 64.0, 62.1, 62.1],
[63.0, 63.0, 64.0, 64.0, 64.9, 63.0, 63.0, 64.0, 68.0, 72.0, 75.0, 77.0, 79.0, 79.0, 79.0, 79.0, 78.1, 75.9, 73.0, 72.0, 71.1, 71.1, 70.0, 69.1],
[69.1, 68.0, 66.0, 66.0, 64.9, 64.0, 64.0, 63.0, 63.0, 64.0, 64.0, 64.0, 64.9, 68.0, 73.0, 75.0, 77.0, 79.0, 80.1, 80.1, 79.0, 77.0, 71.1, 64.0],
[57.9, 57.9, 59.0, 59.0, 57.0, 55.9, 55.0, 55.0, 60.1, 64.9, 70.0, 73.0, 73.0, 73.9, 75.0, 73.9, 75.0, 72.0, 61.0, 57.0, 55.9, 54.0, 53.1, 53.1],
[53.1, 53.1, 52.0, 52.0, 51.1, 51.1, 54.0, 55.0, 64.0, 69.1, 73.0, 77.0, 79.0, 81.0, 81.0, 81.0, 78.1, 75.0, 73.0, 72.0, 68.0, 66.9, 66.0, 66.0],
[62.1, 61.0, 57.9, 57.0, 57.0, 55.0, 54.0, 54.0, 57.0, 63.0, 66.0, 66.9, 70.0, 72.0, 72.0, 72.0, 71.1, 68.0, 63.0, 57.9, 59.0, 55.0, 55.0, 53.1],
[53.1, 51.1, 48.9, 48.0, 46.9, 45.0, 44.1, 45.0, 48.0, 51.1, 54.0, 55.0, 55.9, 57.9, 59.0, 60.1, 59.0, 57.0, 52.0, 46.9, 46.0, 43.0, 45.0, 42.1],
[42.1, 39.9, 39.9, 39.9, 39.9, 39.0, 37.9, 39.9, 45.0, 50.0, 55.0, 57.0, 59.0, 60.1, 61.0, 61.0, 61.0, 57.9, 52.0, 48.0, 46.9, 45.0, 45.0, 45.0],
[45.0, 43.0, 43.0, 43.0, 42.1, 42.1, 42.1, 43.0, 52.0, 57.0, 61.0, 64.0, 68.0, 70.0, 71.1, 70.0, 69.1, 66.9, 62.1, 57.0, 54.0, 54.0, 53.1, 52.0],
[51.1, 50.0, 50.0, 51.1, 51.1, 51.1, 50.0, 52.0, 57.9, 64.0, 70.0, 73.0, 75.0, 75.0, 75.9, 75.0, 73.0, 70.0, 66.9, 63.0, 62.1, 60.1, 60.8, 61.0],
[55.9, 57.0, 57.0, 57.0, 57.0, 57.0, 55.9, 55.0, 55.0, 55.0, 55.0, 55.0, 55.0, 54.0, 54.0, 54.0, 54.0, 54.0, 54.0, 54.0, 54.0, 54.0, 53.1, 53.1],
[57.0, 55.9, 55.0, 54.0, 54.0, 53.1, 53.1, 54.0, 54.0, 53.1, 54.0, 54.0, 54.0, 54.0, 54.0, 54.0, 54.0, 53.1, 53.1, 53.1, 62.1, 68.0, 73.0, 77.0],
[63.0, 59.0, 57.9, 57.9, 55.9, 55.9, 55.0, 55.9, 60.1, 63.0, 66.0, 69.1, 72.0, 72.0, 73.9, 73.0, 70.0, 68.0, 64.0, 61.0, 59.0, 61.0, 57.9, 57.9],
[55.9, 55.9, 55.0, 55.0, 54.0, 55.0, 55.0, 55.0, 55.0, 55.0, 55.0, 55.9, 57.0, 57.0, 57.9, 61.0, 64.0, 68.0, 73.0, 75.9, 78.1, 78.1, 77.0, 78.1],
[64.9, 66.0, 64.9, 64.0, 64.0, 63.0, 61.0, 61.0, 61.0, 61.0, 63.0, 66.9, 64.0, 66.0, 64.0, 64.0, 64.0, 62.1, 61.0, 60.1, 59.0, 57.9, 57.9, 57.9],
[57.9, 57.9, 57.9, 57.9, 57.9, 57.9, 57.0, 57.9, 59.0, 60.1, 59.0, 60.1, 60.1, 61.0, 63.0, 64.9, 66.0, 66.0, 66.0, 66.0, 66.9, 66.9, 66.0, 66.0],
[70.0, 70.0, 71.1, 71.1, 71.1, 71.1, 70.0, 70.0, 69.1, 71.1, 71.1, 73.0, 73.9, 75.9, 77.0, 73.9, 73.0, 72.0, 72.0, 72.0, 72.0, 72.0, 72.0, 72.0],
[72.0, 71.1, 71.1, 71.1, 70.0, 68.0, 68.0, 68.0, 66.2, 66.9, 66.0, 66.0, 69.1, 70.0, 70.0, 73.0, 73.9, 75.9, 77.0, 79.0, 78.1, 75.0, 72.0, 69.1],
[66.9, 66.0, 66.0, 66.0, 66.0, 64.9, 64.0, 63.0, 64.0, 66.0, 69.1, 71.1, 73.0, 73.0, 73.0, 73.9, 73.0, 70.0, 61.0, 59.0, 57.0, 55.9, 54.0, 53.1],
[51.1, 51.1, 51.1, 51.1, 51.1, 52.0, 51.1, 51.1, 54.0, 60.1, 64.0, 66.0, 68.0, 69.1, 68.0, 68.0, 66.9, 64.9, 63.0, 60.1, 59.0, 60.1, 57.9, 57.0]
]
print("Average Hour:", average_hour(temps, 0)) # Should be ~61.3
print("Average Day:", average_day(temps, 0)) # Should be ~71.5
正如评论中提到的,有一些方法可以缩短这一时间。其中一种更具可读性的方法是使用(或@PadraicCunningham指出的底层),例如:
您确实在使用
None
作为索引。相反,对于average_hour
,您应该迭代一天中的所有小时(而不是无小时)。与平均日类似
:
def average_hour (temps, hour):
i = 0
for i in temps[None][i]:
total = total + temps[None][i]
average = total/(i+1)
return average
def average_day (temps, day):
i = 0
for i in temps[i][None]:
total = total + temps[i][None]
average = total/(i+1)
return average
def main():
temps = [
[73.0, 73.9, 73.0, 73.9, 73.9, 73.9, 73.0, 71.1, 71.1, 71.1, 70.0, 70.0, 70.0, 70.0, 70.0, 71.1, 71.1, 71.6, 71.1, 71.1, 70.0, 71.1, 70.0, 71.1],
[63.0, 63.0, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 61.0, 62.6, 62.6, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1, 62.1],
[68.0, 68.0, 69.1, 69.1, 69.1, 73.9, 75.0, 75.9, 81.0, 81.0, 82.0, 84.0, 80.1, 78.1, 75.9, 77.0, 80.1, 81.0, 82.0, 81.0, 81.0, 79.0, 78.1, 78.1],
[78.1, 78.1, 78.1, 77.0, 77.0, 77.0, 75.9, 75.0, 75.2, 75.9, 73.9, 73.9, 73.9, 73.0, 73.0, 73.0, 73.9, 73.9, 73.0, 73.4, 73.0, 73.0, 75.0, 75.0],
[71.1, 71.1, 70.0, 70.0, 70.0, 70.0, 70.0, 70.0, 70.0, 70.0, 69.1, 69.1, 69.1, 69.1, 68.0, 66.9, 66.0, 66.0, 66.0, 66.0, 66.0, 66.0, 64.9, 64.9],
[61.0, 61.0, 61.0, 61.0, 61.0, 61.0, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 60.1, 61.0, 61.0, 61.0, 64.9, 64.9],
[57.0, 55.0, 55.0, 55.0, 54.0, 54.0, 55.0, 54.0, 55.0, 55.9, 55.9, 55.0, 55.0, 57.0, 62.1, 66.9, 71.1, 73.0, 75.0, 77.0, 78.1, 78.1, 78.1, 75.9],
[62.1, 61.0, 61.0, 60.1, 60.1, 59.0, 59.0, 61.0, 66.9, 72.0, 75.9, 78.1, 78.1, 78.1, 78.1, 78.1, 77.0, 75.0, 72.0, 71.1, 70.0, 68.0, 66.0, 64.0],
[63.0, 62.1, 61.0, 61.0, 59.0, 60.1, 59.0, 60.1, 66.9, 73.9, 75.9, 78.1, 81.0, 79.0, 81.0, 79.0, 79.0, 75.9, 73.0, 72.0, 71.1, 71.1, 71.1, 70.0],
[70.0, 69.1, 70.0, 69.1, 69.1, 69.1, 69.1, 69.1, 68.0, 68.0, 68.0, 70.0, 69.8, 70.0, 70.0, 70.0, 71.1, 70.0, 70.0, 71.1, 71.1, 71.1, 73.0, 73.0],
[61.0, 61.0, 60.1, 59.0, 59.0, 59.0, 57.9, 59.0, 59.0, 60.1, 61.0, 61.0, 63.0, 66.9, 66.0, 71.1, 71.1, 73.9, 72.0, 75.9, 75.0, 75.9, 75.9, 75.0],
[62.1, 62.1, 62.1, 61.0, 62.1, 61.0, 62.1, 62.1, 63.0, 62.1, 61.0, 61.0, 61.0, 61.0, 64.0, 64.9, 66.0, 66.0, 68.0, 70.0, 66.0, 64.0, 62.1, 62.1],
[63.0, 63.0, 64.0, 64.0, 64.9, 63.0, 63.0, 64.0, 68.0, 72.0, 75.0, 77.0, 79.0, 79.0, 79.0, 79.0, 78.1, 75.9, 73.0, 72.0, 71.1, 71.1, 70.0, 69.1],
[69.1, 68.0, 66.0, 66.0, 64.9, 64.0, 64.0, 63.0, 63.0, 64.0, 64.0, 64.0, 64.9, 68.0, 73.0, 75.0, 77.0, 79.0, 80.1, 80.1, 79.0, 77.0, 71.1, 64.0],
[57.9, 57.9, 59.0, 59.0, 57.0, 55.9, 55.0, 55.0, 60.1, 64.9, 70.0, 73.0, 73.0, 73.9, 75.0, 73.9, 75.0, 72.0, 61.0, 57.0, 55.9, 54.0, 53.1, 53.1],
[53.1, 53.1, 52.0, 52.0, 51.1, 51.1, 54.0, 55.0, 64.0, 69.1, 73.0, 77.0, 79.0, 81.0, 81.0, 81.0, 78.1, 75.0, 73.0, 72.0, 68.0, 66.9, 66.0, 66.0],
[62.1, 61.0, 57.9, 57.0, 57.0, 55.0, 54.0, 54.0, 57.0, 63.0, 66.0, 66.9, 70.0, 72.0, 72.0, 72.0, 71.1, 68.0, 63.0, 57.9, 59.0, 55.0, 55.0, 53.1],
[53.1, 51.1, 48.9, 48.0, 46.9, 45.0, 44.1, 45.0, 48.0, 51.1, 54.0, 55.0, 55.9, 57.9, 59.0, 60.1, 59.0, 57.0, 52.0, 46.9, 46.0, 43.0, 45.0, 42.1],
[42.1, 39.9, 39.9, 39.9, 39.9, 39.0, 37.9, 39.9, 45.0, 50.0, 55.0, 57.0, 59.0, 60.1, 61.0, 61.0, 61.0, 57.9, 52.0, 48.0, 46.9, 45.0, 45.0, 45.0],
[45.0, 43.0, 43.0, 43.0, 42.1, 42.1, 42.1, 43.0, 52.0, 57.0, 61.0, 64.0, 68.0, 70.0, 71.1, 70.0, 69.1, 66.9, 62.1, 57.0, 54.0, 54.0, 53.1, 52.0],
[51.1, 50.0, 50.0, 51.1, 51.1, 51.1, 50.0, 52.0, 57.9, 64.0, 70.0, 73.0, 75.0, 75.0, 75.9, 75.0, 73.0, 70.0, 66.9, 63.0, 62.1, 60.1, 60.8, 61.0],
[55.9, 57.0, 57.0, 57.0, 57.0, 57.0, 55.9, 55.0, 55.0, 55.0, 55.0, 55.0, 55.0, 54.0, 54.0, 54.0, 54.0, 54.0, 54.0, 54.0, 54.0, 54.0, 53.1, 53.1],
[57.0, 55.9, 55.0, 54.0, 54.0, 53.1, 53.1, 54.0, 54.0, 53.1, 54.0, 54.0, 54.0, 54.0, 54.0, 54.0, 54.0, 53.1, 53.1, 53.1, 62.1, 68.0, 73.0, 77.0],
[63.0, 59.0, 57.9, 57.9, 55.9, 55.9, 55.0, 55.9, 60.1, 63.0, 66.0, 69.1, 72.0, 72.0, 73.9, 73.0, 70.0, 68.0, 64.0, 61.0, 59.0, 61.0, 57.9, 57.9],
[55.9, 55.9, 55.0, 55.0, 54.0, 55.0, 55.0, 55.0, 55.0, 55.0, 55.0, 55.9, 57.0, 57.0, 57.9, 61.0, 64.0, 68.0, 73.0, 75.9, 78.1, 78.1, 77.0, 78.1],
[64.9, 66.0, 64.9, 64.0, 64.0, 63.0, 61.0, 61.0, 61.0, 61.0, 63.0, 66.9, 64.0, 66.0, 64.0, 64.0, 64.0, 62.1, 61.0, 60.1, 59.0, 57.9, 57.9, 57.9],
[57.9, 57.9, 57.9, 57.9, 57.9, 57.9, 57.0, 57.9, 59.0, 60.1, 59.0, 60.1, 60.1, 61.0, 63.0, 64.9, 66.0, 66.0, 66.0, 66.0, 66.9, 66.9, 66.0, 66.0],
[70.0, 70.0, 71.1, 71.1, 71.1, 71.1, 70.0, 70.0, 69.1, 71.1, 71.1, 73.0, 73.9, 75.9, 77.0, 73.9, 73.0, 72.0, 72.0, 72.0, 72.0, 72.0, 72.0, 72.0],
[72.0, 71.1, 71.1, 71.1, 70.0, 68.0, 68.0, 68.0, 66.2, 66.9, 66.0, 66.0, 69.1, 70.0, 70.0, 73.0, 73.9, 75.9, 77.0, 79.0, 78.1, 75.0, 72.0, 69.1],
[66.9, 66.0, 66.0, 66.0, 66.0, 64.9, 64.0, 63.0, 64.0, 66.0, 69.1, 71.1, 73.0, 73.0, 73.0, 73.9, 73.0, 70.0, 61.0, 59.0, 57.0, 55.9, 54.0, 53.1],
[51.1, 51.1, 51.1, 51.1, 51.1, 52.0, 51.1, 51.1, 54.0, 60.1, 64.0, 66.0, 68.0, 69.1, 68.0, 68.0, 66.9, 64.9, 63.0, 60.1, 59.0, 60.1, 57.9, 57.0]
]
print("Average Hour:", average_hour(temps, 0)) # Should be ~61.3
print("Average Day:", average_day(temps, 0)) # Should be ~71.5
正如评论中提到的,有一些方法可以缩短这一时间。其中一种更具可读性的方法是使用(或@PadraicCunningham指出的底层),例如:
temps[i][None]
应该做什么?“无”怎么可能是一个索引?@PadraicCunningham是的,但是“无”的占位符应该是什么呢?您也没有声明总计、使用小时或天,小时和天如何符合您的逻辑?天和小时参数的作用是什么?好的,我可以在average\u hour
和average\u day
的开头写total=0
吗?temps[I][None]
应该做什么?“无”怎么可能是一个索引?@PadraicCunningham是的,但是“无”的占位符应该是什么呢?您也没有声明总计、使用小时或天,小时和天如何符合您的逻辑?天和小时参数的作用是什么?好的,我可以在average\u hour
和average\u day
的开头写total=0
吗?好的。这很有效。现在回答我的问题,让我正确理解!那么,为什么在average_hour
函数中使用for day
,在average_day
函数中使用for hour
?另外,+=
做什么?sum(row[day]表示temps中的row)/len(temps)
表示things中的things
是迭代iterable元素(例如列表
)的pythonical方法x+=y
是通往x=x+y
@schwobaseggl的捷径是的,我知道我们正在迭代。但为什么我们使用的基本上是相反的。就像我们在day
函数中使用的hour
。还有,好的。+=
现在有意义了。@padraiccningham考虑到涉及的temp(31)及其行(24)的长度,sum(temps[day])/len(temps[day])
似乎更合适。这很有效。现在回答我的问题,让我正确理解!那么,为什么在average_hour
函数中使用for day
,在average_day
函数中使用for hour
?另外,+=
做什么?sum(row[day]表示temps中的row)/len(temps)
表示things中的things
是迭代iterable元素(例如列表
)的pythonical方法x+=y
是通往x=x+y
@schwobaseggl的捷径是的,我知道我们正在迭代。但为什么我们使用的基本上是相反的。就像我们在day
函数中使用的hour
。还有,好的。+=
现在是有意义的了。@padraiccanningham考虑到涉及的temp(31)及其行(24)的长度,sum(temps[day])/len(temps[day])
def average_hour(temps, hour):
days = [day[hour] for day in temps]
return sum(days)/len(days)
# or even shorter: return sum(day[hour] for day in temps)/len(temps)
def average_day(temps, day):
return sum(temps[day])/len(temps[day])