【问题标题】:enumerate does not work with 2d arrays yet range(len()) doeaenumerate 不适用于二维数组 range(len()) dora
【发布时间】:2022-06-15 20:41:23
【问题描述】:

我听说我们都应该使用 enumerate 来遍历数组,但是

for i in enumerate(array):
    for j in enumerate(array[i]):
        print(board[i][j])

不起作用,但在使用 range(len()) 时

for i in range(len(array)):
    for j in range(len(array[i)):
        print(board[i][j])

它按预期工作

【问题讨论】:

  • Enumerate 基本上将列表或数组的每个元素转换为两个元素的元组,其中一个是计数器,一个是实际的“旧”元素。检查有关此的文档,并发布您在尝试运行时收到的错误代码?
  • 简单地将range(len(...)) 替换为enumerate(...) 是行不通的。在使用某些您不知道的功能之前,您应该查看文档。应该是for i, row in enumerate(array): for j, element in enumerate(row): print(element)。无论如何,您甚至不需要enumerate,因为您不需要索引。只需循环:for row in array: for element in row: print(element)...

标签: python


【解决方案1】:

像这样使用它:

for idxI, arrayI in enumerate(array):
    for idxJ, arrayJ in enumerate(arrayI):
        print(board[idxI][idxJ])

【讨论】:

    【解决方案2】:

    就像我写的 enumerate 为每个元素添加了一个额外的计数器。有效地将您的元素列表转换为元组列表。

    例子

    array = ['a', 'b','c','d']
    print(list(enumerate(array)))
    

    给你这个:

    [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
    

    所以在你的情况下,你想要做的只是在迭代它时添加额外的元素

    for i, item1 in enumerate(array):
        for j,item2 in enumerate(array[i]):
            print(array[i][j])
    

    你的问题是

    for i in enumerate(array):
    

    在我的例子中,这个 i 不是一个整数,而是一个元组 ('1','a')。而且您无法访问具有元组索引值的列表元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      • 1970-01-01
      • 2021-07-15
      • 2021-11-21
      • 2021-09-30
      相关资源
      最近更新 更多