SuiTechLog

Unity,Arduino,RaspberryPiなど、モノづくり系を気ままに書き残すブログ。

Pythonスクリプト書くときの小技メモ


新旧問わず小技メモをまとめました。

リストの内容をズラす小技

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が取り出せます。

つまり負だと、ケツからサーチしてくれます。意外と便利。