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です。これは、fromNonetoの1、およびのステップです-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 に答える