新旧問わず小技メモをまとめました。
リストの内容をズラす小技
Pythonじゃなくても使えます
何個ずらすかをs
元のリストをog
ずらした後のリストをshとすると
og = [1,2,3,4]
sh = []
s = 1
print(og)
for i in range(len(og)):
sh.append(og[(i-s)%len(og)])
print(sh)
これはシンプル。
%で余りをだしているところがキモ。書いてみるとわかりますが、
(i-s)の部分は
i=0のとき、-1
i=1のとき、0
i=2のとき、1
i=3のとき、2
となり
それぞれを%4して余りを出すと
i=0のとき、3
i=1のとき、0
i=2のとき、1
i=3のとき、2
となって1つぶんズレるのでした。なお、「負の数のあまり」は必ず正になるので「3」となっております。ちょっと感覚的にわかりずらいかもしれませんが、これも紙に書いて確かめて見ると納得行くと思います。
if条件分を使わない小技
Pythonじゃなくても使えます
answer1 = 128
answer2 = 64
finalanswer = 0
n=10
bw = (n == 10)
finalanswer = (bw * answer1 + (1-bw) * answer2)
print(finalanswer)
==比較演算子の仕組みを巧みに使います。
n==10の部分がtrueであればbwには1が帰り、falseであれば0が返ります。そのため、それを重みのように使って、finalanswerに解答をつっこんでいます。
if分岐を使うより速度は速いはず…。こういうときは三項演算子を使ってもいいかもしれません。
Pythonリストの先頭ではなくケツからたどる小技
これはPythonの仕様です。Cとかそのあたりの言語では使えません。
og = [1,2,3,4]
こういうリストがあるとき、ご存知の通りog[0]で1が、og[1]は2が取り出せますが
og[-1]は4
og[-2]は3が取り出せます。
つまり負だと、ケツからサーチしてくれます。意外と便利。