【问题标题】:Python / creating hours and minutes listPython / 创建小时和分钟列表
【发布时间】:2025-12-03 17:35:01
【问题描述】:

我想创建一个包含小时和分钟的列表。列表中的每个元素在开始和结束之间都有 30 分钟。

times = ["9:00 - 9:30","9:30 - 10:00","10:00 - 10:30", "10:30 - 11:00","11:00 - 11:30",..........,"21:30 - 22:00"]

列表应从 9:00 开始,到 22:00 结束,因此列表的最终元素将是“21:30 - 22:00”。

有什么办法可以快速解决吗?

【问题讨论】:

  • 怎么样?这就是问题所在。@Alchimie
  • datetime 包可能会有所帮助。或简单的索引(例如,偶数为x.00 - x:300,奇数为y:30 - y+1:00)来生成理想的结果。

标签: python python-3.x list data-structures


【解决方案1】:

这可能不是最优雅的方式,但您可以使用 for 循环来做到这一点:

times = []
for i in range(9, 22):
    times.append(f"{i}:00 - {i}:30")
    times.append(f"{i}:30 - {i+1}:00")

输出:

['9:00 - 9:30', '9:30 - 10:00', '10:00 - 10:30', '10:30 - 11:00', '11:00 - 11:30', '11:30 - 12:00', '12:00 - 12:30', '12:30 - 13:00', '13:00 - 13:30', '13:30 - 14:00', '14:00 - 14:30', '14:30 - 15:00', '15:00 - 15:30', '15:30 - 16:00', '16:00 - 16:30', '16:30 - 17:00', '17:00 - 17:30', '17:30 - 18:00', '18:00 - 18:30', '18:30 - 19:00', '19:00 - 19:30', '19:30 - 20:00', '20:00 - 20:30', '20:30 - 21:00', '21:00 - 21:30', '21:30 - 22:00']

【讨论】:

  • 这是完美的。非常感谢。@patmcb
  • 使用range(9, 22) 会比在所有地方添加 9 更好吗?
【解决方案2】:

这是一种熊猫的做法

>>> my_range = pandas.date_range("09:00","21:30",freq="30min")                                                        
>>> my_range.strftime("%H:%M:%S") + "-" +  my_range.shift(1).strftime("%H:%M:%S")       

【讨论】:

  • 谢谢你。@Joran Beasley