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

问题描述 投票:0回答:3

我试图在循环中添加和扩展列表的项目,如下所示:

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 arrays list dataframe append
3个回答
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)

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]

0
投票

将两个列表项组合在一起作为单个列表项的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]))
© www.soinside.com 2019 - 2024. All rights reserved.