有没有更简洁的方法将本地时间转换为单个二进制列表?

时间:2012-08-07 15:50:44

标签: python python-2.7

我正在尝试将本地时间转换为单独的反向二进制数组/列表。

这是我的工作代码:

    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])

有没有办法做到这一点,我错过了?

2 个答案:

答案 0 :(得分:3)

你想要的实际上是

seconds_list = list("{0:#b}".format(second)[:1:-1])

语法有点奇怪;切片是from:to:step。这是from Noneto为1,步长为-1;当步骤为负时,from默认为字符串的结尾,因此这意味着“从字符串的末尾向后,直到但不包括位置1”。

答案 1 :(得分:1)

是的,有:

>>> ''.join('{0:#b}'.format(x)[2:] for x in time.localtime())
'11111011100100011110001111001110011110111001'

要反转,您最后可以添加[::-1]

但这并不意味着你应该这样做。将清晰度放在较短的代码之上。