2014-02-28 3 views
0

목록에 약 2,000 개의 번호가 있습니다. 이것은 내가 원하는 것의 예일뿐입니다.목록 항목을 일정 기간 복사하는 방법은 무엇입니까?

나는 list1=[1,2,3,4]list2=[1,3,2,5]입니다. 나는 새 목록에서 list1[i] 번이 list2[i] 번 사용되도록하고 싶습니다.

그래서이 예를 들어 새 목록은 다음과 같습니다 list3=[1,2,2,2,3,3,4,4,4,4,4]

새로운 list3는 1 × 1, 3 × 2, 2 × 3, 5 × 4를 가지고있다.

답변

2

이 꽤하지 않고 이해하기 특히 쉽지 않지만 작동합니다

>>> [1] * 3 
[1, 1, 1] 

: 당신은 목록을 곱할 수

>>> list1 = [1, 2, 3, 4] 
>>> list2 = [1, 3, 2, 5] 
>>> import itertools 
>>> list3 = list(itertools.chain(*[[list1[i]] * count for i, count in enumerate(list2)])) 
>>> list3 
[1, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4] 

간략한 설명 ... 이 목록을 사용하면 목록을 얻을 수 있습니다.

>>> [[list1[i]] * count for i, count in enumerate(list2)] 
[[1], [2, 2, 2], [3, 3], [4, 4, 4, 4, 4]] 

그런 다음 itertools를 사용하여 위와 같이 목록을 병합 할 수 있습니다.

0
list1=[1,2,3,4] 
list2=[1,3,2,5] 

list3 = [] 
for a, b in zip(list1, list2): 
    for i in range(b): 
     list3.append(a) 

list3 == [1, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4] 
0

또 다른 대안 :

list1=[1,2,3,4] 
list2=[1,3,2,5] 

z=[] 
for x,y in zip(list1,list2): 
    z.extend([x] * y) 

print z 
관련 문제