メモ@inudaisho

君見ずや出版 / 興味次第の調べ物置き場

Python3 のリストとrangeの降順

 ただのメモ。

 Python3 の rangeは間隔を指定できるが、-1の間隔も指定できる。つまり降順で0まで舐めるときこう書ける。

for i in range(x,-1,-1):
    #処理

 リストも同じように間隔を指定できるので(スライス)、同じことをやろうとして手癖でこう書くと

aA[x:-1:-1]

 期待したものがでてこない。リストで-1は末尾なので、-1まで-1するのではなく、-1(末尾)と比較してすぐ終わってしまい、無が返ってくる。リストの場合こう書かないといけない。

aA[x::-1]

 ちょっとハマってしまってこれがわかったとき、とりあえずこう書いてしのいだ。

def parseZero(ii):
    if ii >= 0:
        return ii

#文字列Sのl,r間を転置し続ける
for _ in range(N):
    l,r=[int(_)-1 for _ in input().split()]
    S = "".join((S[:l],S[r:parseZero(l-1):-1],S[r+1:]))

 便利言語の罠だな。こわいこわい。(罠というか.... ボケ?)

入門 Python 3

入門 Python 3

実践 Python 3

実践 Python 3