在循环中仅将列表的值添加到另一个列表

时间:2019-03-17 14:36:54

标签: python arrays list dataframe append

我试图按如下所示循环添加和扩展列表的项:

decorator

以上代码的结果如下:

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]]

3 个答案:

答案 0 :(得分:1)

您可以使用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]

答案 1 :(得分:1)

在带有+运算符的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)

答案 2 :(得分:0)

将两个列表项组合为一个列表项的Python方式是使用“ 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]))