我有这段检查条件的代码:
def is_important(data_row):
if data_row.get('important', None):
return True
add_data = get_additional_data(data_row)
for word in NEGATIVE_WORDS:
if word in add_data.lower():
return False
for word in POSITIVE_WORDS:
if word in add_data.lower():
return True
return False
这很难理解(在我看来),所以我想知道是否有人可以建议一些更 pythonic 和更短的行?例如,我可以合并两个 for 循环吗?如果我合并两个 for 循环,它会消耗更多时间吗?
请您参考如下方法:
由于 any 很像您的显式循环,因此更紧凑并且短路。
def is_important(data_row):
if data_row.get('important', None):
return True
add_data = get_additional_data(data_row)
if any(word in add_data.lower() for word in NEGATIVE_WORDS): # negative check takes precedence.
return False
if any(word in add_data.lower() for word in POSITIVE_WORDS):
return True
return False
一些事情:
- 为什么在搜索
NEGATIVE_WORDS而不是POSITIVE_WORDS时调用.lower()? - 如果
add_data同时包含NEGATIVE_WORDS和POSITIVE_WORDS,最后两个if的顺序将影响结果。这不是好的做法。
