干净的小时列表创建方式

3 投票
4 回答
7188 浏览
提问于 2025-04-16 17:10

我想创建一个小时的列表,这个列表包含24小时制的时间(用数字表示)和12小时制的时间(用字符串表示)。

格式应该是这样的:

[(0, "12 AM"), (1, "1 AM), ..., (13, "1PM"), ... ]

我已经得到了类似这样的结果

hours = [(0,"12 AM")]
hours += [(hour,str(hour) + " AM") for hour in range(1, 12)]
hours += [(12,"12 PM")]
hours += [(hour+12,str(hour) + " PM") for hour in range(1, 12)]

但是我觉得还有更简洁的方法来实现这个,但我想不出来。

4 个回答

0

这是给你准备的又一个简短的代码示例:

[(hour24, '%d %s' % (hour12, (lambda x: 'AM' if x < 12 else 'PM')(hour24))) for hour12, hour24 in zip(([12]+range(1, 12)*2), range(0, 24))]
3

这段代码是用来处理某个特定任务的。它可能涉及到一些数据的输入、处理和输出。具体来说,代码块中的内容可能会包含一些变量、函数或者其他编程元素,这些都是为了让计算机能够理解并执行我们想要的操作。

在编程中,代码块通常是一个功能的集合,能够完成特定的工作。比如说,可能是计算一个数字、显示一条信息,或者从一个地方获取数据等。

如果你对这段代码有疑问,可以尝试逐行理解它的意思,看看每一部分是如何工作的。记住,编程就像是给计算机下指令,越清晰明了,计算机就越容易理解。

>>> hours = [(n, "%d %s" % (n % 12 or 12, ["AM", "PM"][n > 11])) for n in range(24)]
>>> hours
[(0, '12 AM'), (1, '1 AM'), (2, '2 AM'), (3, '3 AM'), (4, '4 AM'), (5, '5 AM'), (6, '6 AM'), (7, '7 AM'), (8, '8 AM'), (9, '9 AM'), (10, '10 AM'), (11, '11 AM'), (12, '12 PM'), (13, '1 PM'), (14, '2 PM'), (15, '3 PM'), (16, '4 PM'), (17, '5 PM'), (18, '6 PM'), (19, '7 PM'), (20, '8 PM'), (21, '9 PM'), (22, '10 PM'), (23, '11 PM')]
13
import datetime as dt
hours = [(i, dt.time(i).strftime('%I %p')) for i in range(24)]

当然可以!请提供你想要翻译的内容,我会帮你把它变得更简单易懂。

撰写回答