エンジニアもどきの雑記

メモ帳です。きっと。macアプリ配信windowsでもできるようになるまで絶対にメイン機にしないマン。特筆しない限り環境は【win10home,i5-7200u,8g,64bit,巨乳が好き】

【python】phperから見たリストが面白い


ここ数日、基礎からしっかりやろう(本をいくつか持っててそれは適当にやってた)、とPythonを基礎文法からやりなおしてる。絵が下手なのは関係ない、私です。
リストっていうのは他の言語でいう配列みたいなもん。配列とは言わないのかな?

とりあえず以下

arr = [1, 2, 3, 4, 5]

def test(arr, a, b = 4):
    for i in range(len(arr)):        
        new_arr = arr[: b]
    print(new_arr[::a]);
    return new_arr

result = test(arr, a = 2)
print(result)

//出力結果
[1, 3]
[1, 2, 3, 4]


python3で確認したから動くはず。

これ、もう面白くてしかたない。


まさかこんな基礎中の基礎でここまで楽しめるなんて思わなかった。
死ぬ気で勉強してきたc#よりもワクワク感ある。


arr[::]これがもうたまらない。

arr[0から数えた最初の数 : そこからの数 : ステップ]


とかもうこの説明が今までphpとかしか書いてきていない私は心躍った。
jsでいうsplice、phpでいうsubstr的なことがこれでできるわけですよ。

だから上のコードで説明すると。

arr = [1, 2, 3, 4, 5]  #リストの宣言

def test(arr, a, b = 4): #関数 他でいうfunction test(arr, a, b)みたいな (引数の初期化は当然できる。jsとは違うのだよ)
    for i in range(len(arr)): #for文 arrの要素数だけ回す    
        new_arr = arr[: b] #arr[: b] b = 4 arrの最初(指定なし)から4(b)までをスライスする。よって arr = [1, 2, 3, 4] (指定しているのは1~5。指定した場所長さまで、なので5じゃなくて4まで取得している。
    print(new_arr[::a]); #new_arr[::a] a = 2 これは、new_arr(arrじゃないよ)の最初から最後までで最初含む2番目に出てきた要素を最後までステップで取得。を、出力。出力結果一行目
    return new_arr # new_arrをreturn 他の言語の関数と同じ

result = test(arr, a = 2) #test関数に引数arrと名前付きで2を二番目の引数として渡す。三番目は渡さず初期値に任せる。
print(result) #↑の結果を出力 出力結果二番目
//出力結果
[1, 3]
[1, 2, 3, 4]


まだrandomIntとtinker?くらいしかパッケージも使ってないけど、
なんとなく計算周りというか数字に強いイメージは持てた。

タプルとかsetとか辞書型とかもやったけど、とりあえずこの時点でインパクトあった。
これからちょこちょこやってくよ。tensorflowの本も買ったし。