Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:尝试创建两个函数。一个遍历二维列表的列,而另一个遍历行_Python_Arrays_Python 3.x_For Loop_Multidimensional Array - Fatal编程技术网

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])