我正在尝试将本地时间转换为单独的反向二进制数组/列表。
这是我的工作代码:
secs = time.localtime()
year, month, day, hour, minute, second, weekday, yearday, daylight = secs
seconds_string = "{0:#b}".format(second)
seconds_string = seconds_string[2:]
seconds_list = list(seconds_string[::-1])
minutes_string = "{0:#b}".format(minute)
minutes_string = minutes_string[2:]
minutes_list = list(minutes_string[::-1])
hours_string = "{0:#b}".format(hour)
hours_string = hours_string[2:]
hours_list = list(hours_string[::-1])
如果可能的话,我想让这个更简洁,但是以下的尝试都不起作用。
seconds_list = list("{0:#b}".format(second)[2::-1])
有没有办法做到这一点,我错过了?
答案 0 :(得分:3)
你想要的实际上是
seconds_list = list("{0:#b}".format(second)[:1:-1])
语法有点奇怪;切片是from:to:step
。这是from
None
,to
为1,步长为-1
;当步骤为负时,from
默认为字符串的结尾,因此这意味着“从字符串的末尾向后,直到但不包括位置1”。
答案 1 :(得分:1)
是的,有:
>>> ''.join('{0:#b}'.format(x)[2:] for x in time.localtime())
'11111011100100011110001111001110011110111001'
要反转,您最后可以添加[::-1]
。
但这并不意味着你应该这样做。将清晰度放在较短的代码之上。