在多维列表中使用 index()
对于一维列表,找到某个项目的索引(位置)的方法如下:
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)