假设我有一个诅咒词列表
curseword = ['fuxx', 'die', 'damn']
如果我正在遍历一个句子列表(字符串列表)来检查该句子是否包含诅咒词。
text = [ ['i','am','a','boy'] , [....] , [....] ]
我尝试做类似
的事情for i in curse_words:
for t in text:
if i in t:
// exsits
但似乎错误且效率低下。
我怎样才能有效地做到这一点?
答案 0 :(得分:2)
您可以将jQuery.ajax({
url: "https://www.aworkingapi.com",
type: "GET",
},
success: function(data){
$.each(data.content, function (index, item) {
if (['en','or', 'de', 'ur', 'bn', 'ch'].some(original_language => item.original_language.includes(original_language))) {
html += "<div class="customContent">";
html += "<div class='original_language'><span class='b'>Lan:</span> " + item.original_language + "</div>";
// more content
},
dataType: 'json'
}
})
转换为cursewords
以提高查找效率,并使用列表理解,这比在较小的情况下更通用的循环更有效:
set
答案 1 :(得分:2)
将curseword
列表转换为集合,然后将用户set.intersection
转换为检查句子中的字词是否与cursword
重叠。
In [10]: curseword = {'fuxx', 'die', 'damn'}
In [11]: text = [ ['i','am','a','boy'], ['die']]
In [21]: new_text = [int(bool(curseword.intersection(sent))) for sent in text]
In [22]: new_text
Out[22]: [0, 1]
答案 2 :(得分:0)
正如你所说,你想要不同的东西:
您可以尝试不循环:
curseword = ['fuxx', 'die', 'damn']
text = [ ['i','am','a','damn','boy']]
print(list(filter(lambda z:z!=[None],map(lambda x:(list(map(lambda y:y if x in y else None,text))),curseword))))
输出:
[[['i', 'am', 'a', 'damn', 'boy']]]