【问题标题】:Adding only the values of a list to another list in a loop在循环中仅将列表的值添加到另一个列表
【发布时间】:2019-08-08 01:06:41
【问题描述】:

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

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]

【问题讨论】:

  • 你会想要extend,而不是append

标签: python arrays list dataframe append


【解决方案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】:

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

    【讨论】:

      【解决方案3】:

      将两个列表项组合在一起作为单个列表项的 Pythonic 方法是使用“扩展”关键字而不是附加。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-13
        • 2019-05-15
        • 2021-08-18
        • 2018-03-06
        相关资源
        最近更新 更多