1

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

这是我的工作代码:

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

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

4

2 回答 2

3

你想要的其实是

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

语法有点奇怪;切片是from:to:step。这是 a fromof None, a toof 1 和 step of -1;当步长为负时,from默认到字符串的末尾,所以这意味着“从字符串的末尾向后,直到但不包括位置 1”。

于 2012-08-07T15:54:57.050 回答
1

就在这里:

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

要扭转这一点,您可以[::-1]在最后添加。

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

于 2012-08-07T15:58:20.550 回答