Python 带有条件和双 for 循环语法错误的列表理解
Python list comprehension with conditional and double for loop syntax error
我正在尝试计算列表 'predicted' 中的元素等于列表 'actual' 中相应元素的次数,当说 'actual' 元素等于 1( 'true positives').
这是我的代码:
def F_approx(predicted, actual):
est_tp = np.sum([int(p == a) if a for p in predicted for a in actual])
est_fn = np.sum([int(p !=a) if a for p in predicted for a in actual])
est_recall = est_tp / (est_tp + est_fn)
pr_pred_1 = np.sum([int(p == 1) for p in predicted]) / len(predicted)
est_f = np.power(est_recall, 2) / pr_pred_1
return(est_f)
我 的眼睛看起来是正确的,但我得到一个错误:
File "<ipython-input-17-3e11431566d6>", line 2
est_tp = np.sum([int(p == a) if a for p in predicted for a in actual])
^
SyntaxError: invalid syntax
感谢您的帮助。
if
在 循环表达式之后:
[int(p == a) for p in predicted for a in actual if a]
不过,看起来你真的很想zip
把这些放在一起:
[int(p == a) for p, a in zip(predicted, actual)]
if 放在列表理解的末尾
[int(p == a) for p in predicted for a in actual if a]
作为旁注,使用您的特定构造,您可以添加一个三元运算并在您的列表理解中包含一个 else
[int(p == a) if a else '' for p in predicted for a in actual if a]
将 else 添加到列表理解的末尾将抛出 SyntaxError
我正在尝试计算列表 'predicted' 中的元素等于列表 'actual' 中相应元素的次数,当说 'actual' 元素等于 1( 'true positives').
这是我的代码:
def F_approx(predicted, actual):
est_tp = np.sum([int(p == a) if a for p in predicted for a in actual])
est_fn = np.sum([int(p !=a) if a for p in predicted for a in actual])
est_recall = est_tp / (est_tp + est_fn)
pr_pred_1 = np.sum([int(p == 1) for p in predicted]) / len(predicted)
est_f = np.power(est_recall, 2) / pr_pred_1
return(est_f)
我 的眼睛看起来是正确的,但我得到一个错误:
File "<ipython-input-17-3e11431566d6>", line 2
est_tp = np.sum([int(p == a) if a for p in predicted for a in actual])
^
SyntaxError: invalid syntax
感谢您的帮助。
if
在 循环表达式之后:
[int(p == a) for p in predicted for a in actual if a]
不过,看起来你真的很想zip
把这些放在一起:
[int(p == a) for p, a in zip(predicted, actual)]
if 放在列表理解的末尾
[int(p == a) for p in predicted for a in actual if a]
作为旁注,使用您的特定构造,您可以添加一个三元运算并在您的列表理解中包含一个 else
[int(p == a) if a else '' for p in predicted for a in actual if a]
将 else 添加到列表理解的末尾将抛出 SyntaxError