<p>如果必须使用列表:</p>
<pre><code>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)
</code></pre>
<p>通过创建对象数组,而不是stringdtype,我强制<code>add</code>ufunc使用Python字符串的<code>+</code>方法。正如@Sandeep的答案所示,字符串加法是一种连接。字符串乘法是一种复制。你知道吗</p>
<p>第三个阵列:</p>
<pre><code>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)
</code></pre>
<p>我在猜测你把行动链起来是什么意思。你知道吗</p>
<p>就我个人而言,我更喜欢@vash的itertools解决方案;<code>numpy</code>不会给Python的字符串处理增加太多内容。你知道吗</p>
<pre><code>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']
</code></pre>