请原谅一个新手问题,但我的代码中有以下片段:
timePeriod = '7'
timeDiff = today - dateLast
if timeDiff.days > 90:
timePeriod = '180'
elif timeDiff.days > 30:
timePeriod = '90'
elif timeDiff.days > 7:
timePeriod = '30'
# Use timePeriod in call...
而且它的效率似乎非常低。必须有一种更好的方法使用日期时间库来分配 timePeriod,但我还没有找到。部分问题在于代码过于通用,搜索答案会产生数千个不相关的结果。我考虑过:
timePeriod = '180' if timeDiff.days > 90 else '90' if timeDiff.days > 30 else...
但这并没有利用我在其他地方看到的 python 的强大功能。
这里有我没有看到的明显的“正确”解决方案吗?或者我原来的解决方案“足够好”,我不应该搞乱它?
非常感谢!
最佳答案
向 J.F. Sebastian 致敬,他为我指出了这个方向。对于任何对我采用的解决方案感兴趣的人:
from bisect import bisect
...
periods = [0, 7, 30, 90, 180]
timeDiff = (today - dateLast).days
timePeriod = str(periods[bisect(periods[:-1], timeDiff)])
这是针对 timeDiff 的所有正值进行测试([:-1] 将结果限制为“180”,防止超出范围引用)。
关于python 确定时间范围的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22238004/