【问题标题】:Looping through a 2d array Python循环遍历二维数组 Python
【发布时间】:2019-09-25 19:41:51
【问题描述】:

我对某些事情有点困惑,当我想出这段代码时,我正在循环一个二维数组,只是在试验:

result = [["Lucas","5"],["Tim","2"]]
count = 0
for line in result:
    for item in result[count]:
        print(item)
        count = count + 1

我认为这样做是给我一个Lucas 的结果,然后是2,因为它会转到第一项,然后第二个for 循环将通过子列表,打印result[0][0] , 但是一旦它到达子列表的第一项,它会将计数增加到 1,这意味着它将打印result[1][1] next,因为它在一个新的范围内,但是循环随后将转到第二项它属于的范围。

但是,这会给出 'Lucas','5' 作为输出。我想当我改变计数时,我认为我正在改变它循环的范围。

请解释一下为什么我错了

提前感谢您,并很抱歉没有很好地解释这一点。

【问题讨论】:

    标签: python arrays python-3.x multidimensional-array


    【解决方案1】:

    当你这样做时

    for item in result[count]:
    

    表达式result[count] 仅在循环开始时计算一次。每次循环都不会对其进行评估,因此重新分配count 对后续迭代没有影响。大致相当于:

    temp = result[count]
    for item in temp:
    

    请记住,您使用 for 循环的值可能是生成器表达式。这些不能被索引,它们只是计算一系列值。所以每次都重新评估它们是没有意义的。

    【讨论】:

      【解决方案2】:
      for line in result:
      

      会循环遍历顶层数组,所以这里有2条记录:["Lucas","5"]["Tim","2"]然后:

      for item in result[count]:
      

      将循环遍历 2 条记录中的每条记录,所以

      print(item)
      

      将显示 4 个项目,顺序为 Lucas, 5, Tim, 2

      这里不需要计数,它在这里没有任何用处,并且无论如何都不被任何一个 for 循环使用。

      【讨论】:

        【解决方案3】:

        如果你坚持使用 for 循环,你也可以使用

        result = [["Lucas","5"],["Tim","2"]]
        count = 0
        for line in range(len(result)):
            for item in result[line]:
                print(item)
                count = count + 1
        

        返回:卢卡斯 5 蒂姆 2

        【讨论】:

          【解决方案4】:

          不需要count 变量。 result[count] 给你第一个项目,因为你设置了count = 0,所以你实际上只是在你的内部循环中循环通过["Lucas", "5"]。您可以只使用两个 for...in 循环

          result = [["Lucas","5"],["Tim","2"]]
          count = 0
          for line in result:
              for item in line:
                  print(item)
          

          【讨论】:

          • 这不能回答问题。
          • 知道有用,但不能回答我的问题 - 应该是评论
          猜你喜欢
          • 2014-12-22
          • 2018-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-03
          • 2019-02-04
          • 2018-11-02
          • 2016-01-20
          相关资源
          最近更新 更多