如何遍历固定长度列表,到达末尾后自动从头开始循环?
纯Python实现基于偏移量的循环星期匹配
核心思路
利用Python的取模运算(%)处理循环索引,因为星期列表固定7个元素,偏移量对7取模后会自动落在0-6的有效索引范围内,无论偏移量是正数还是负数,都能直接匹配到对应的星期元素。
代码实现
- 定义星期列表(可根据需求调整顺序,比如以周日开头)
week_days = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
- 编写偏移匹配函数
def get_target_weekday(offset): # 对偏移量取模,得到有效索引 target_index = offset % len(week_days) return week_days[target_index]
测试示例
- 偏移量0(无偏移):
get_target_weekday(0)→ 返回"周一" - 偏移量7(整周循环):
get_target_weekday(7)→ 返回"周一" - 偏移量3:
get_target_weekday(3)→ 返回"周四" - 偏移量-1(往前偏移1天):
get_target_weekday(-1)→ 返回"周日" - 偏移量10(1周+3天):
get_target_weekday(10)→ 返回"周四"
原理说明
取模运算会自动处理循环逻辑:
- 正数偏移:超过7的部分会被"截断",比如10%7=3,等价于偏移3天
- 负数偏移:Python的取模会返回非负结果,比如-1%7=6,对应列表最后一个元素,完美实现"循环到开头"的需求
内容的提问来源于stack exchange,提问作者jiriki79
相关产品推荐
相关产品推荐

