Добрый день.
Суть:
Есть лист с почтами получателей такого вида
receiver = ['receiver1@mail.ru', 'receiver2@mail.ru', 'receiver3@mail.ru', 'receiver4@mail.ru', 'receiver5@mail.ru']
Есть лист с почтами отправителей
такого же вида
sender = ['sender1@mail.ru', 'sender@mail.ru', 'sender3@mail.ru', 'sender4@mail.ru', 'sender5@mail.ru']
Как мне правильно разбить лист с получателями относительно кол-ва отправителей
Сейчас есть такая функция:
def split_list(main_list, wanted_parts):
""" Функция делит базу получателей на части"""
length = len(main_list)
return [main_list[i * length // wanted_parts: (i + 1) * length // wanted_parts] for i in
range(wanted_parts)] # возвращает лист со вложенными листами
# С этой функции мы собираем листы с майлами(отправители и получатели) и отправляем на обработку в split list
def my_func():
receiver = ['receiver1@mail.ru', 'receiver2@mail.ru', 'receiver3@mail.ru', 'receiver4@mail.ru', 'receiver5@mail.ru']
sender = ['sender1@mail.ru', 'sender@mail.ru']
total_receiver_account = len(receiver) # кол-во получателей
total_sender_account = len(sender) # кол-во отправителей
# привожу к int, тк остается остаток(1) тут то и находится моя проблема, ведь я не могу разделить список на 2,5(может и могу, но ума не хватает)
print(split_list(receiver, int(total_receiver_account/total_sender_account)))
{
'sender1@mail.ru': ['receiver1@mail.ru', receiver2@mail.ru'],
'sender2@mail.ru': ['receiver3@mail.ru', 'receiver4@mail.ru']
}
В сущности функция работает, но есть очевидные проблемы с логикой, например, если получим в результате деления float
receiver_count = 23
sender_count = 3
result = receiver_count/ sender_count
result = 7.666666666666667
Как мне описать данную логику, что бы не терялись почты в процессе деления.
PS необязательно что бы разделенные списки были равными, мне как раз надо в какой то из списков дописать остаточные почты, ну или раскидать по всем
Спасибо