Повторять значения в списке (имеющем два списка) в python - PullRequest
0 голосов
/ 05 мая 2020

Я кодирую Python, у меня есть такое упражнение:

long = [5, 2, 4]
number = [1, 2, 3]
ids = []

Я хочу иметь:

ids = [1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3]

Я хочу повторить 5 раз 1, 2 раза по 2, 4 раза по 3.

Не знаю, как это сделать.

Ответы [ 3 ]

2 голосов
/ 05 мая 2020

Вы можете сделать это с помощью простого l oop, которое будет перебирать (times-to-repeat, number) пары и расширять ваш выходной список сгенерированным списком чисел:

for times, n in zip(long, number):
    ids.extend([n] * times) 
print(ids) # [1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3]
2 голосов
/ 05 мая 2020
from collections import Counter

long = [5, 2, 4]
number = [1, 2, 3]

ids = list(Counter(dict(zip(number, long))).elements())
print(ids)
0 голосов
/ 05 мая 2020

Они предоставили вам два очень хороших решения, но я оставлю здесь метод грубой силы (вряд ли когда-либо лучший), так как вы, вероятно, более склонны понимать его:

long = [5, 2, 4]
number = [1, 2, 3]
ids = []

for i in range(len(long)):
    aux = 0
    while (aux < long[i]):
        ids.append(number[i])
        aux += 1
print(ids)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...