python将所有可能的2个列表元素对,并获取该对的索引

python将所有可能的2个列表元素对,并获取该对的索引,python,list,tuples,cartesian-product,Python,List,Tuples,Cartesian Product,假设我有两个列表: 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)将是第一对。要完成答案并停留在示例中: import itertools a = [1, 2, 3] b = [4, 5, 6] c = list(itertools.product

假设我有两个列表:

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)将是第一对。

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

import itertools  

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

idx = c.index((1,4))
但这将是基于零的列表索引,因此0而不是1。

一种方法:

  • 在第一个列表中查找要查找的配对的第一个元素:

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

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

    k = i * len(b) + j
    

  • 您以错误的方式调用了
    list()
    构造函数。使用
    [1,2,3]
    而不是调用
    list()
    .Hi会更简单。我认为list()对于列表和print()对于print(在Python2.x中)是一样的?它不是这样工作的。嘿不先创建组合列表就可以了吗?只需使用itertools函数就可以得到一个简单的迭代器。当然,如果您可以迭代,然后等待所需的元组到达,计算迭代次数。或者您可以在第一个列表中找到第一个值的索引,在第二个列表中找到第二个值的索引,然后开始计算:)