2016-10-31 9 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

Вы можете использовать zip перебрать (value, key) пар.

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

Это также возможно без для цикла, используя nested list comprehensions:

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

Используйте лямбда перемножить эти значения между ними легко. Ваша лямбда будет принимать два аргумента, по одному из каждого массива и возвращает умножение:

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

Нам необходимо заключить значение (x) от values предоставленного lambda в квадратных скобках, чтобы не получить строковое умножение и скорее ,

Это приводит к:

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

 Смежные вопросы

  • Нет связанных вопросов^_^