我有这样的单词列表(这里只列出了2个):
list_1 = ['average', 'reasonable']
list_2 = ['fiddle', 'frolic']
list_n = ['etc', 'etc']
我想把这两张单子相乘得到这个答案:
obj[l1] * obj[l2] = ['average fiddle', 'average frolic', 'reasonable fiddle', 'reasnable frolic']
obj[l1] * obj[l2] *...* obj[n]
我写了这个代码:
import numpy as np
obj = {}
obj['l1'] = np.array(list_1)
obj['l2'] = np.array(list_2)
print(obj['l1']*obj['l2'])
但这只给了我一个错误:
TypeError: ufunc 'multiply' did not contain a loop with signature matching types dtype('<U10') dtype('<U10') dtype('<U10')
我该怎么办?你知道吗
编辑: 尝试使用以下用户建议的itertools:
word_list = ['fair play']
output = {'fair': ['average', 'reasonable'], 'play': ['fiddle', 'frolic']}
result = []
for words in word_list:
for word in word_tokenize(words):
list_1 = output_set[word]
result = [(x, y) for x, y in product(list_1, result)]
result = list(map(' '.join, result))
print(result)
但这只返回一个空集。有没有一种方法可以遍历“无限”列表?你知道吗
使用itertools.产品我们可以将这些作为
tuples
获得,然后使用' '.join
创建str
的如果必须使用列表:
通过创建对象数组,而不是stringdtype,我强制
add
ufunc使用Python字符串的+
方法。正如@Sandeep的答案所示,字符串加法是一种连接。字符串乘法是一种复制。你知道吗第三个阵列:
我在猜测你把行动链起来是什么意思。你知道吗
就我个人而言,我更喜欢@vash的itertools解决方案;
numpy
不会给Python的字符串处理增加太多内容。你知道吗相关问题 更多 >
编程相关推荐