我有一个这样的数组:['a', ['e', 'r', 't'], 'c']
。
我想使用某种处理方式使数组整洁:[['a', 'e', 'c'], ['a', 'r', 'c'], ['a', 't', 'c']]
.
如果数组是:['a', ['e', 'r', 't'], ['c', 'd']]
。
结果是:[['a', 'e', 'c'], ['a', 'e', 'd'], ['a', 'r', 'c'], ['a' , 'r', 'd'], ['a', 't', 'c'], ['a', 't', 'd']]
。
并且数组的长度不固定为3,其他例子:
['a', 'b'] = > ['a', 'b']
['a', ['b', 'c']] => [['a', 'b'], ['a', 'c']]
['ab', ['b', 'c']] => [['ab', 'b'], ['ab', 'c']]
[[1, 2], 3, 4] => [[1, 3, 4], [2, 3, 4]]
那我该怎么办呢? Numpy 中有解决方案吗?
除非我误解了这个问题,否则您只需要 product
的子列表,尽管您必须首先将任何单个元素包装到列表中。
>>> from itertools import product
>>> arr = ['a', ['e', 'r', 't'], ['c', 'd']]
>>> listified = [x if isinstance(x, list) else [x] for x in arr]
>>> listified
[['a'], ['e', 'r', 't'], ['c', 'd']]
>>> list(product(*listified))
[('a', 'e', 'c'),
('a', 'e', 'd'),
('a', 'r', 'c'),
('a', 'r', 'd'),
('a', 't', 'c'),
('a', 't', 'd')]
我是一名优秀的程序员,十分优秀!