#python #arrays #list #dataframe #append
#python #массивы #Список #dataframe #добавить
Вопрос:
Я пытаюсь добавлять и расширять элементы списка в цикле следующим образом:
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]
Комментарии:
1. Вы захотите
extend
, неappend
Ответ №1:
В python два типа последовательностей могут быть объединены с
помощью оператора. Это также может произойти на месте с помощью =
оператора
Вместо
y_predicts.append(tmp_l)
вы должны использовать
y_predicts = tmp_l
в вашем цикле.
Другим способом добавления всех элементов из одного списка в другой является extend
метод списка . В отличие от 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 способ объединить два элемента списка в один элемент списка — использовать ключевое слово «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]))