如何定义从索引集到不确定域集的函数?

时间:2019-04-04 21:45:32

标签: python-3.x

我想定义

list([[i0,i1,i2,i3, ..., ik]] for i0 in T[0] for i1 in T[1] for i2 in T[2] for i3 in T[3] for ...)

由于k是不确定的,所以我不能像

list([[i0,i1,i2,i3]] for i0 in T[0] for i1 in T[1] for i2 in T[2] for i3 in T[3]).

有一般解决方案吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

您嵌套的for将成为T中子列表的笛卡尔积。 Itertools具有一个product()函数,该函数将为您提供这些值的迭代器,您可以像这样使用它:

from itertools import product
T = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10,11, 12]]
p = product(*T)
for i in p:
    print(i)
  

(1、4、7、10)
  (1、4、7、11)
  (1、4、7、12)
  (1、4、8、10)
  (1、4、8、11)
  (1、4、8、12)
  (1、4、9、10)
  (1、4、9、11)
  ...
  (3,6,9,10)
  (3,6,9,11)
  (3,6,9,12)

当然,如果需要列表中的值,也可以将其传递给list()