2015-02-01 5 views
-2

목록 A에 [[2,3], [4,5]]가 있고 다른 목록 B에 [7,8]이 있다고 가정하고 추가하고 싶습니다 B에서 A까지의 항목은 결과는 [[7,1,2] [8,4,5]]이어야합니다. 두 개의 루프를 사용하려고했지만 잘못된 결과가 나타납니다.목록에서 항목을 파이썬을 사용하여 다른 목록에 추가

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

제 목표는 B의 첫 번째 항목 인 "7"을 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 메서드는 ab의 항목을 동시에 반복합니다. b가 변경되지 않은 상태에서

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

우리는 a 새 값을 참조하십시오.

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

In [80]: b 
Out[80]: [7, 8] 
관련 문제