我试图在循环中添加和扩展列表的项目,如下所示:
y_predicts=[]
y_trues=[]
for train,test in cv.split(X,y):
predict = classifier.fit(X.iloc[train],y.iloc[train]).predict(X.iloc[test])
tmp_l=predict.tolist()
y_predicts.append(tmp_l)
y_trues.append(np.array(y.iloc[test]))
上面代码的结果是这样的:
print(y_predicts):
[[1, 1, 0, 0, 0], [1, 0, 0, 1, 0]]
但是,我想要的输出应该是这样的:
print(y_predicts):
[1, 1, 0, 0, 0, 1, 0, 0, 1, 0]
在python two sequence types can be concatenated与+
运算符。这也可以使用+=
运算符就地发生
代替
y_predicts.append(tmp_l)
你应该使用
y_predicts += tmp_l
在你的循环中。
将所有项目从一个列表添加到另一个列表的另一种方法是列表的extend
method。与将给定项目作为整体添加到列表中的append
方法相比,extend
将其所有项目附加到列表中:
y_predicts.extend(tmp_l)
您可以使用extend()
而不是append()
它将添加传入列表中的元素而不是列表本身。
b = []
a = [1, 2, 3, 4]
c = [6,7, 8]
b.extend(a)
b.extend(c)
print(b)
# > [1, 2, 3, 4, 6, 7, 8]
将两个列表项组合在一起作为单个列表项的Pythonic方法是使用“extend”关键字而不是append。
y_predicts=[]
y_trues=[]
for train,test in cv.split(X,y):
predict = classifier.fit(X.iloc[train],y.iloc[train]).predict(X.iloc[test])
tmp_l=predict.tolist()
y_predicts.extend(tmp_l)
y_trues.append(np.array(y.iloc[test]))