Как объясняется @ user2357112 в комментариях, у вас есть последний элемент в виде 0-мерного массива. Если вы проверите длину, вы получите TypeError: len() of unsized object
. Чтобы ваше решение работало, вам нужно заключить элемент в последний массив, используя []
, чтобы иметь возможность использовать product
import itertools
a = [np.array([1., 2.]), np.array([3., 4.]), np.array([1400.])]
b = list(itertools.product(*a))
#[(1.0, 3.0, 1400.0),
# (1.0, 4.0, 1400.0),
# (2.0, 3.0, 1400.0),
# (2.0, 4.0, 1400.0)]
Редактировать ответ на второй вопрос по запросу:
import itertools
dict1 = {'wdth_i': ['1', '2'], 'wdth_p': ['3', '4'], 'mu': '1400'}
a = []
for i in dict1.values():
if isinstance(i, list):
a.append(i)
else:
a.append([i])
f = list(itertools.product(*a))
# [('1', '3', '1400'),
# ('1', '4', '1400'),
# ('2', '3', '1400'),
# ('2', '4', '1400')]