我的理解是,在保护语句中有两个条件,并用逗号分隔,这两个条件都必须成立。我可以单独编写一个保护声明,然后编译代码,但是当我将它们与逗号组合时,会出现错误。我的语法有什么问题吗?或者谁能解释为什么它无法编译?
df.groupby('Week')['Alarm1','Alarm2'].apply(lambda x: x.sum()/x.count()).reset_index()
Week Alarm1 Alarm2
0 1 0.333333 0.333333
1 2 0.250000 0.750000
2 3 1.000000 1.000000
答案 0 :(得分:2)
您使用了太多无意义的括号,基本上没有在简单表达式的if
和guard
语句中使用括号。
发生错误是因为编译器将包围括号视为元组((Bool, Bool)
),这就是错误消息的意思。
guard mode != "mapme" else {
guard !(annotation is MKUserLocation) else { // here the parentheses are useful but the `!` must be outside of the expression
guard mode != "mapme", !(annotation is MKUserLocation) else {
答案 1 :(得分:1)
如果要使用括号,只需使用&&运算符(或||如果需要OR子句)
guard (mode != "mapme" && !(annotation is MKUserLocation)) else {
答案 2 :(得分:0)
很快,您不需要在if语句,for循环等所有内容的外括号。通常不将它们包括在内是一种很好的做法,在您的情况下,当您包括方括号时,guard声明将成为元组。因此,只需将您的代码更改为此,它就可以正常工作。
guard mode != "mapme" else { //compiles
}
guard !(annotation is MKUserLocation) else { //compiles
}
guard mode != "mapme", !(annotation is MKUserLocation) else {
}