这个问题可能比我说的要简单。听说过 3 列总共有 8 个值的 2 值真值表吗? TTT, TTF...
和 2 列有 4 个值的 2 值真值表? TT、TF、FF、FT
在我的问题中:
有 5 列。
A、B、C、D、E
列 A
只能取 1
值:a
列 B
可以采用 2
值:x
和 y
列 C
可以采用 3
值 1
、2
和 3
, (值可以是字符串或整数,数据类型无关紧要。
列 D
可以采用 2
值 t
和 f
最后
列 E
可以采用 3
值 alpha
和 omega
和 beta
所以一共有36种组合! (1 X 2 X 3 X 2 X 3)
= 36
到目前为止我做了什么?
我想到了这个令人厌恶的东西。我想要的输出是通过运行下面的命令产生的:
col1 = ['a']
col2 = ['x', 'y']
col3 = ['1', '2', '3']
col4 = ['t', 'f']
col5 = ['alpha', 'omega', 'beta']
for i in col1:
for j in col2:
for k in col3:
for l in col4:
for m in col5:
print(i, j, k, l, m)
36 行..
a x 1 t alpha
a x 1 t omega
a x 1 t beta
a x 1 f alpha
a x 1 f omega
a x 1 f beta
a x 2 t alpha
a x 2 t omega
a x 2 t beta
a x 2 f alpha
a x 2 f omega
a x 2 f beta
a x 3 t alpha
a x 3 t omega
a x 3 t beta
a x 3 f alpha
a x 3 f omega
a x 3 f beta
a y 1 t alpha
a y 1 t omega
a y 1 t beta
a y 1 f alpha
a y 1 f omega
a y 1 f beta
a y 2 t alpha
a y 2 t omega
a y 2 t beta
a y 2 f alpha
a y 2 f omega
a y 2 f beta
a y 3 t alpha
a y 3 t omega
a y 3 t beta
a y 3 f alpha
a y 3 f omega
a y 3 f beta
我不确定是否有任何更简单、更简洁的方法来做到这一点..我想知道是否有..
我同意将 36 行作为 lists
的 list
或 pandas DataFrame
或 numpy 数组返回
我可以迭代
最佳答案
您可以使用 itertools 中的产品来为您列出一个元组:
输入:
import itertools
lst = [['a'],['x', 'y'],['1', '2', '3'],['t', 'f'],['alpha', 'omega', 'beta']]
list(itertools.product(*lst))
输出:
[('a', 'x', '1', 't', 'alpha'),
('a', 'x', '1', 't', 'omega'),
('a', 'x', '1', 't', 'beta'),
('a', 'x', '1', 'f', 'alpha'),
('a', 'x', '1', 'f', 'omega'),
('a', 'x', '1', 'f', 'beta'),
('a', 'x', '2', 't', 'alpha'),
('a', 'x', '2', 't', 'omega'),
('a', 'x', '2', 't', 'beta'),
('a', 'x', '2', 'f', 'alpha'),
('a', 'x', '2', 'f', 'omega'),
('a', 'x', '2', 'f', 'beta'),
('a', 'x', '3', 't', 'alpha'),
('a', 'x', '3', 't', 'omega'),
('a', 'x', '3', 't', 'beta'),
('a', 'x', '3', 'f', 'alpha'),
('a', 'x', '3', 'f', 'omega'),
('a', 'x', '3', 'f', 'beta'),
('a', 'y', '1', 't', 'alpha'),
('a', 'y', '1', 't', 'omega'),
('a', 'y', '1', 't', 'beta'),
('a', 'y', '1', 'f', 'alpha'),
('a', 'y', '1', 'f', 'omega'),
('a', 'y', '1', 'f', 'beta'),
('a', 'y', '2', 't', 'alpha'),
('a', 'y', '2', 't', 'omega'),
('a', 'y', '2', 't', 'beta'),
('a', 'y', '2', 'f', 'alpha'),
('a', 'y', '2', 'f', 'omega'),
('a', 'y', '2', 'f', 'beta'),
('a', 'y', '3', 't', 'alpha'),
('a', 'y', '3', 't', 'omega'),
('a', 'y', '3', 't', 'beta'),
('a', 'y', '3', 'f', 'alpha'),
('a', 'y', '3', 'f', 'omega'),
('a', 'y', '3', 'f', 'beta')]
关于Python:生成一个包含 5 列的多值真值表,其中每列可以取一组特定的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52546167/