背景:
我有一个python脚本来检查员工的工作时间。每位员工都有上午和下午的班次,午餐时间介于两者之间,每次他们放手指都会记录新的时间戳。
因此,根据每天的时间,当天列表中可能有0到4个时间戳。
问题:"我怎样才能解开'时间戳到相应的变量,避免所有这些丑陋,重复的代码?"
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)
答案 0 :(得分:1)
一个简单的解决方案,但可能不是那么优雅
morning_entry,morning_leave,afternoon_entry,afternoon_leave=(timestamps+[None]*4)[:4]
只需在列表前用Nones填充它,然后切片
答案 1 :(得分:0)
基于itertools
的{{3}}版本:
from itertools import chain, repeat
(morning_entry,
morning_leave,
afternoon_entry,
afternoon_leave) = chain(timestamps, repeat(None, 4))
它是否更优雅是值得商榷的;它确实有一个小的改进,timestamps
不限于任何特定类型的可迭代。