函数获取itertools.product在python中的组合/矩阵表示产生的组合的索引?

时间:2017-01-22 01:55:46

标签: python numpy itertools

例如:

alist=[['a','b'],[1,2]]

和组合

('a',1)

有没有办法获得这个组合的索引,即(0,0),因为它们都在各自列表中的第0个位置或像

这样的矩阵
[[1,1],[0,0]]

其中1表示选择的位置以形成组合?

2 个答案:

答案 0 :(得分:1)

嗯,你可以像ruaridhw指出的那样创建索引。你可以这样做:

from itertools import product

alist = [['a','b'],[1,2]]
print [a for a in product(*alist)]
print [list(a) for a in product(*[range(len(x)) for x in alist])]

输出:

[('a', 1), ('a', 2), ('b', 1), ('b', 2)]
[[0, 0], [0, 1], [1, 0], [1, 1]]

答案 1 :(得分:0)

由于给定组合c的每个元素都在alist的相应行中找到,因此以下内容返回其索引的元组:

alist = [['a','b'],[1,2]]
c = ('a',1)
ix = tuple(row.index(elem) for row, elem in zip(alist, c))

此处ix变为(0, 0)