2016-10-31 7 views
0

스택에 대한 대답을 찾고 있었지만 올바른 대답을 찾을 수 없습니다.다른 두 목록의 값으로 새 목록을 채우는 방법

나는 두 목록했습니다 :

keys = ['banana', 'orange'] 
values = [3, 5] 

을 그리고 그렇게 같은 찾고 새로운 목록을 만들고 싶어 :

newlist = ['banana', 'banana', 'banana', 'orange', 
    'orange', 'orange', 'orange', 'orange'] 
+1

브레이크 :

이 결과 짝하는 방법'keys'과'values', 어떻게 각각의 문자열을 반복합니다. 아직 아무 것도 시도하지 않았습니까? –

+0

네, 여러 번 시도했지만 작동하지 않았습니다. 루프를 위해 2 개를 사용했습니다. – George

+0

@MartijnPieters 어쩌면 당신이 쉽게 당신을 도울 수 있습니다. – George

답변

0

당신은 이상 (value, key)쌍을 반복하는 zip를 사용할 수 있습니다.

[y for x in zip(values, keys) for y in x[0] * [x[1]]] 
0

쉽게 그들 사이에이 값을 곱 람다를 사용

out = [] 
for e in zip(values, keys): 
    out.extend(e[0] * [e[1]]) 

IT는 nested list comprehensions 사용, for 루프없이 수도 있습니다. 우리는 오히려 문자열 곱셈과를 얻을하기 위해 대괄호 lambda에게 주어진 values에서 값 (x)을 묶어야합니다

newlist = list(map(lambda x, y: [x] * y, keys, values)) 

: 귀하의 람다 곱셈을 두 개의 인수, 각 배열에서 하나를 가지고 반환 . 하위 문제로 문제 아래

[['banana', 'banana', 'banana'], 
['orange', 'orange', 'orange', 'orange', 'orange']]