Фон:Назначить фиксированное число переменных элементам в списке переменной длины
У меня есть скрипт python для проверки рабочего времени сотрудников. У каждого сотрудника есть утренняя и дневная смена, с обеденным перерывом между ними, и каждый раз, когда они кладут палец, записывается новая отметка времени.
Таким образом, в зависимости от времени суток может быть от нуля до четырех временных меток в списке за этот день.
Вопрос: «Как я могу« распаковать »временные метки для соответствующих переменных, избегая всего этого уродливого, дублированного кода?»
morning_entry = None
morning_leave = None
afternoon_entry = None
afternoon_leave = None
timestamps = get_timestamps()
if timestamps:
morning_entry = timestamps.pop(0)
if timestamps:
morning_leave = timestamps.pop(0)
if timestamps:
afternoon_entry = timestamps.pop(0)
if timestamps:
afternoon_leave = timestamps.pop(0)
'pop()' удаляет последний элемент из списка. Не очевидный выбор дизайна imo. – vaultah
@PadraicCunningham: но 'timestamps.pop()' мутирует 'timestamps'. – DSM
@PadraicCunningham: как указывал DSM, я снимаю один элемент за раз и назначая его. Это работает так, как я хочу, но, очевидно, очень уродлив и плохо нарушает DRY (представьте более длинный список переменных ...) – heltonbiker