2015-02-01 5 views
-2

Предположим, у меня есть список A содержит [[2,3], [4,5]] и есть еще один список B с [7,8], я хочу добавить элементы в B до A, результаты должны быть: [[7,1,2] [8,4,5]]. Я попытался использовать две петли, но я получил неправильные результаты.добавление элементов из списка в другой список с использованием python

import numpy as np 

news = [] 

for x in A: 
    for y in B: 
     news.append(np.insert(x,0,y)) 
print news 
+2

что ... как вы получаете '7,1,2'? –

+0

Моя цель состоит в том, чтобы добавить первый элемент «7» в B в A [0] и «8» в A [1] – Mike

+0

, разве это не '7,2,3'? –

ответ

2

numpy.column_stack.

In [6]: import numpy as np 

In [7]: a = np.array([[2,3],[4,5]]) 

In [8]: b = np.array([7,8]) 

In [9]: np.column_stack((b,a)) 
Out[9]: 
array([[7, 2, 3], 
     [8, 4, 5]]) 
+0

Стоит отметить, что порядок в столбце column_stack важен, так как он обозначает порядок добавления. –

+0

Спасибо, Akavall. Не позволяет ли итеративно добавлять элементы в другой список? Или просто конкатенировать их обоих? – Mike

+0

@Mike Я считаю, что под капотом 'numpy.concatenate', создает новые массивы и заполняет их значениями из' a' и 'b'. Они находятся в разных местах памяти, поэтому любые изменения, внесенные вами в 'a' или' b', впоследствии не повлияют на ваш новый массив. – Akavall

0

Вы можете использовать понимание списка, которое ничего не возвращает. Вместо этого он просто изменяет список a. Метод zip выполняет итерацию по пунктам в a и b одновременно.

In [78]: [x.insert(0,y) for x,y in zip(a,b)] 
Out[78]: [None, None] 

Мы видим новые значения для a, в то время как b неизменна.

In [79]: a 
Out[79]: [[7, 2, 3], [8, 4, 5]] 

In [80]: b 
Out[80]: [7, 8] 
Смежные вопросы