27

假设我有两个列表:

a = list(1,2,3)
b = list(4,5,6)

所以我可以有 9 对这些列表成员:

(1,4)
(1,5)
(1,6)

(2,4)
(2,5)
(2,6)

(3,4)
(3,5)
(3,6)

现在,给定两个像上面这样的列表成员,我可以找出这对的索引吗?就像上面的 (1,4) 将是第一对。

4

2 回答 2

50

并完成答案并留在示例中:

import itertools  

a = [1, 2, 3]
b = [4, 5, 6]
c = list(itertools.product(a, b))

idx = c.index((1,4))

但这将是从零开始的列表索引,因此是 0 而不是 1。

于 2011-11-23T13:22:56.003 回答
9

一种方法:

  1. 在第一个列表中找到您要查找的对的第一个元素:

    p = (1, 4)
    i = a.index(p[0])
    
  2. 在第二个列表中找到您要查找的对的第二个元素:

    j = b.index(p[1])
    
  3. 计算产品列表中的索引:

    k = i * len(b) + j
    
于 2011-11-23T13:29:37.210 回答