如何在if语句中检查两者是否不相等?

时间:2018-12-04 01:23:50

标签: if-statement

我的代码中有很多这样的内容:

StratifiedShuffleSplit

我想知道是否可以用其他代码代替它以使代码更整洁。我尝试了以下方法:

from sklearn.model_selection import StratifiedShuffleSplit
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], 
              [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1])

groups_to_stratify = np.array([1,2,3,1,2,3,1,2,3,1,2,3])

sss = StratifiedShuffleSplit(n_splits=5, test_size=0.3, random_state=0)
sss.get_n_splits()

print(sss)       

# Note groups_to_stratify is used in the split() function not y as usual
for train_index, test_index in sss.split(X, groups_to_stratify):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]
    print("TRAIN indices:", train_index, 
          "train groups", groups_to_stratify[train_index],
          "TEST indices:", test_index, 
          "test groups", groups_to_stratify[test_index])

但是它不起作用,因为如果其中只有一个不相等,那么整个事情都是错误的。

2 个答案:

答案 0 :(得分:3)

使用De Morgan的法律之一(a)

not (A and B) = (not A) or (not B)

换句话说:

if (x1 != x2 || y1 != y2) {
    // do the thing
}

如果不想对命题逻辑考虑太多,可以使用以下英语变体。

  1. 如果两个陈述都是正确的,您只想做“事情”
  2. 因此,如果之一或全部两个语句为假,则应执行“该操作”。

(a)另一个是:

not (A or B) = (not A) and (not B)

答案 1 :(得分:0)

如果您的代码以if或else语句结尾,则可以执行

if (x1 == x2 && y1 == y2) {
        // do something 
        return;    // this will end the execution here. 
}
// the else block would be in the rest of execution. 

当您尝试从用户提交某些输入或进行断言时,此方法很有用。因此,我获得了正确的输入,请继续执行其他操作,而不是检查不确定的可能性。