Python: 根据元素返回二维列表中的两个整数索引

16 投票
8 回答
36142 浏览
提问于 2025-04-16 16:21

我这周在玩Python,遇到了一些问题。
假设我有一个这样的二维列表:

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

然后我执行了这个操作:

>>>myList.index([3,4])

结果会返回:

1

不过,我想要的是在其中一个列表里找到某个东西的索引,像这样:

    >>>myList.index(3)

然后它会返回:

1, 0

有没有什么方法可以做到这一点?

谢谢!

8 个回答

2

使用简单的生成器表达式:

def index2d(list2d, value):
    return next((i, j) for i, lst in enumerate(list2d) 
                for j, x in enumerate(lst) if x == value)

示例

print index2d([[1,2],[3,4],[5,6]], 3)
# -> (1, 0)
5

如果你需要查找很多东西,可以创建一个映射。

>>> myList = [[1,2],[3,4],[5,6]]
>>> d = dict( (j,(x, y)) for x, i in enumerate(myList) for y, j in enumerate(i) )
>>> d
{1: (0, 0), 2: (0, 1), 3: (1, 0), 4: (1, 1), 5: (2, 0), 6: (2, 1)}
>>> d[3]
(1, 0)
25

试试这个:

def index_2d(myList, v):
    for i, x in enumerate(myList):
        if v in x:
            return (i, x.index(v))

用法:

>>> index_2d(myList, 3)
(1, 0)

撰写回答