在多维列表中使用 index()

18 投票
9 回答
72433 浏览
提问于 2025-04-16 20:30

对于一维列表,找到某个项目的索引(位置)的方法如下:

 a_list = ['a', 'b', 'new', 'mpilgrim', 'new']
 a_list.index('mpilgrim')

那么对于二维或多维列表,应该怎么做呢?

补充说明:我添加了一个例子来说明:假设我有一个三维列表,如下所示:

b_list = [
          [1,2],
          [3,4],
          [5,6],
          [7,8]
         ],
         [
          [5,2],
          [3,7],
          [6,6],
          [7,9]
         ]

现在假设我想在这个列表中找到一个特定的值。如果我知道第一维和第二维的索引,但不知道我想要的值的零维索引,我该如何找到这个零维索引呢?

是不是可以这样做:

  target_value = 7
  b_list[0].index(target_value)

输出结果是一个整数: 0

9 个回答

6

多维列表就是一个里面包含多个列表的列表。也就是说,它的索引本身也是列表。

a = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
print a.index([2, 3, 4])
# prints 1
8

对于二维列表,你可以遍历每一行,然后使用.index函数来查找某个项目:

def find(l, elem):
    for row, i in enumerate(l):
        try:
            column = i.index(elem)
        except ValueError:
            continue
        return row, column
    return -1

tl = [[1,2,3],[4,5,6],[7,8,9]]

print(find(tl, 6)) # (1,2)
print(find(tl, 1)) # (0,0)
print(find(tl, 9)) # (2,2)
print(find(tl, 12)) # -1
22

我不知道有没有自动化的方法来做到这一点,但如果你有

a = [[1,2],[3,4],[5,6]]

并且你想找到数字3的位置,你可以这样做:

x = [x for x in a if 3 in x][0]

print '索引是 (%d,%d)'%(a.index(x),x.index(3))

输出结果是:

索引是 (1,0)

撰写回答