【问题标题】:How to iterate through a list of lists and obtain their position(like a matrix) properly [duplicate]如何遍历列表列表并正确获取它们的位置(如矩阵)[重复]
【发布时间】:2020-06-24 05:41:48
【问题描述】:

给定这样的列表:

grid = [['R', 'S', 'S', 'I', 'Q', 'A', 'S', 'T', 'K'],
        ['Q', 'O', 'E', 'A', 'I', 'E', 'S', 'T', 'A'],
        ['D', 'B', 'M', 'X', 'F', 'E', 'O', 'K', 'I']]

我可以像这样访问第一行第三列:

print(grid[1][3])

但我真正喜欢做的是遍历网格中的值并获得它们的第行和第列值。 我尝试了我的知识,这是我的代码:

word = "A"
items = []
for rows in grid:
    for column in rows:
        if word == column:
            items.append([grid.index(match),  match.index(string)])

但是当我打印它时:[[0, 5], [1, 3], [1, 3]]。 我没有将 [1, 8] 排在第三位,而是得到了矩阵重复之前的值。 我尝试了很多次,但我失败了。请帮帮我。

谢谢。

【问题讨论】:

  • 你要查看的是enumerate
  • 使用“for index,values in enumerate(grid)”而不是“for value in grid”。行也是如此。
  • 如果您阅读了.index 的文档,您就会清楚为什么它的行为与您观察到的一样。

标签: python list matrix


【解决方案1】:

您可以使用enumerate 来跟踪您当前正在查看的元素的 x 和 y 坐标,而不必调用 index(这就是为什么您会找到两次相同的元素)。

for x, rows in enumerate(grid):
    for y, column in enumerate(rows):
        if word == column:
            items.append([x, y])

打印:[[0, 5], [1, 3], [1, 8]]

【讨论】:

    猜你喜欢
    • 2014-04-20
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多