Циклически перебирать несколько списков с перечислением? - PullRequest
0 голосов
/ 04 февраля 2020

В настоящее время я назначаю каждому человеку в списке определенную c неделю месяца. Это делается на весь год.

import itertools
import datetime

today = datetime.date.today()
today_str = str(today)
year,month,date = today_str.split('-')
# convert week of the year to a number
current_week = (datetime.date(int(year), int(month), int(date)).isocalendar()[1])

name_list1 = ["Kacey", "Cindy", "John"]

for num, item in enumerate(itertools.cycle(name_list1), 7):
    if num >= current_week:
        print(item)
        break

Выше будет найден человек, который выпадает на 7-й неделе .... Kacey

1. Kacey
2. Cindy
3. John
4. Kacey
5. Cindy
6. John
7. Kacey

Как я могу это сделать с 2 списка имен? Таким образом, каждому имени в списке list1 будет назначена неделя, а каждому имени в списке list2 будет назначена неделя? Они полностью независимы друг от друга. Я хочу сделать это в одном для l oop, если это возможно.

name_list1 = ["Kacey", "Cindy", "John"]
name_list2 = ["Bob", "Julie", "Brian"]

В списке 2, Боб будет # 7.

1. Bob
2. Julie
3. Brian
4. Bob
5. Julie
6. Brian
7. Bob

Я мог бы создать для l oop для каждого списка, но это будет довольно уродливо при работе с несколькими списками.

1 Ответ

0 голосов
/ 04 февраля 2020

Мне удалось заархивировать его:

for num, (item1, item2) in enumerate(itertools.cycle(zip(name_list1, name_list2)), 7):
    if num >= current_week:
        print(item1 + " " + item2)
        break
...