Если вы должны сделать это со списками:
In [86]: list_1 = ['average', 'reasonable']
...: list_2 = ['fiddle', 'frolic']
In [87]: arr1 = np.array(list_1, object)
In [88]: arr2 = np.array(list_2, object)
In [89]: np.add.outer(arr1, arr2)
Out[89]:
array([['averagefiddle', 'averagefrolic'],
['reasonablefiddle', 'reasonablefrolic']], dtype=object)
Создавая массивы объектов, в отличие от строки dtype, я заставляю add
ufunc использовать метод +
строк Python,Как показывает ответ @ Sandeep, добавление строк - это соединение.Умножение строк является копией.
И с третьим массивом:
In [90]: arr3 = np.array(['etc', 'etc'], object)
In [91]: np.add.outer(np.add.outer(arr1, arr2),arr3)
Out[91]:
array([[['averagefiddleetc', 'averagefiddleetc'],
['averagefrolicetc', 'averagefrolicetc']],
[['reasonablefiddleetc', 'reasonablefiddleetc'],
['reasonablefrolicetc', 'reasonablefrolicetc']]], dtype=object)
Я предполагаю, что вы подразумеваете под цепочкой операций.
Лично я предпочитаю решение itashtools @ vash;numpy
мало что добавляет к обработке строк в Python.
In [105]: [' '.join(x) for x in itertools.product(arr1,arr2,arr3)]
Out[105]:
['average fiddle etc',
'average fiddle etc',
'average frolic etc',
'average frolic etc',
'reasonable fiddle etc',
'reasonable fiddle etc',
'reasonable frolic etc',
'reasonable frolic etc']