素人からの機械学習②_Python① | Late Riser

Late Riser

ダメ主婦ミルミルのプログラムと道の駅ドライブとリラックマの日々。
プログラム系は情報提供ではなく個人的メモなので、信憑性薄め。

Pythonの勉強            
            
まぁ、多言語利用してるプログラマですのでね、気になったところだけ。            
            
・Python2系とPython3系ではいろいろ違うので必ず3系でよろしく。2系はそろそろ朽ちるかと…            
(まぁAnacondaで一緒にいれちゃうんだけど)            
            
・拡張子は.py            
・コマンドの最後に;がいらない。(書きたい)            
・;は文字の区切りコード(なんでやねん。つーかこんな一行複数命令コード書くか?)            
   例:print "Hello";print "world"            
・コメントは#            
・文字コードはUTF-8にしとけばいいんちゃうかな      
   # coding: UTF-8         

  
・ネストでプログラムを制御する            
・トリプルクオーテーションで囲めばエスケープシーケンスを省略できる            
・大文字小文字を区別する            

・変数名 = オブジェクト            
・変数名:1文字目は英文字かアンダーバー(_)            
・変数名:2文字目以降は英数文字、アンダーバー            
・変数名:予約語は使用できない            
・変数名:大文字と小文字は区別される            
・オブジェクトは真偽に分類できる            
   「True」は数値の「1」、「False」は数値の「0」と同じように扱う            
   数値の「0」や空文字は偽(false)、それ以外は真(true)、Nullも偽            
   空のタプル()、空のリスト[]、空のディクショナリ{}は偽(false)            
   NoneType型の「None」は偽(false)            
   オブジェクトの比較            
     str1 == str2 #valueの比較            
     str1 is str2 #オブジェクトの比較 逆は「is not」            
            
・型は緩い            
・if文            
   if 条件式1:        
      条件式1が真の時に実行する処理1    
      条件式1が真の時に実行する処理2    
   elif 条件式2:        
      条件式2が真の時に実行する処理1    
   else:        
      どれにも適合しない場合の処理    
   print x #ifを抜けた後の処理        

            
・配列構造が3つ(厳密にいうと、ディクショナリ型はMAP型)            
・リスト。ゆるいつくり。数値オブジェクトと文字列オブジェクトが入ってもいいし、リストオブジェクトを入れてもいい            
   list =[オブジェクト1, オブジェクト2, ...]            
   list = [10, [20, 16], [32, 34], 18]            
   value1 = list[0]            
   ・インデックスは0から(逆説からのアクセスは「-1」から使える)            
   ・値が被る場合は消し込まれる            
   ・スライス使える            
      リストオブジェクト[開始インデックス:終了インデックス]            
   ・追加、削除、変更等々色々メソッドが豊富で変更が柔軟(VBAしね)            
            
・タプル:ほとんどリストと一緒だが、あとから変更できない            
   tuple = (オブジェクト1, オブジェクト2, ...)            
   tuple = オブジェクト1, オブジェクト2,  #とも書ける。ややこしいな。            
   ※要素が1つの時はtuple = (オブジェクト1, )と記述            
            
・ディクショナリ:要は連想配列            
   dict = {キー1:値1, キー2:値2, ...}            
   value =  dict["key"]            
   辞書では要素に順番は無いので、内部でどう並ぶかはわからない            
   ・存在しないkeyを使うとKeyErrorになる            
   ・キーに数値や文字列を使用できる            
   {1:"A", 2:"B"}            
   {"JP":u"日本", "CA":u"カナダ"}            
   {(50, 100):"test", (120, 150):"test2"}            
   ・追加、削除、変更等々色々メソッドが豊富で変更が柔軟(VBAしね)            
            
・while文(elseは省略可    
        
   while 条件式:            
      条件式が真の時に実行する処理1            
   else:            
      条件式が偽の時に実行する処理1(whileを抜けるときに行う)            
               
   while抜けた後に実行する処理            

            
・for文            
   for 変数 in オブジェクト:            
      実行する処理1            
   else:            
      forを抜けるときに            
            
   for抜けた後に実行する処理    
        
            
   ・色々回し方            
      for num in [4, 3, 12]:            
      for str in "Hello":            
      for var in range(0, 10):            
      for value in list1:            
      for key in range(len(list1)):            
      for key, value in enumerate(list1):            
            
・2つのリストを同時ループするとき            
   for key in range(len(list1)):            
      print("リスト1:" + list1[key] + ", リスト2:" + list2[key])            

   を↓に置き換えれる(↑二つともが必ずあるとは限らない)            

   for value1, value2 in zip(list1, list2):            
      print("リスト1:" + value1 + ", リスト2:" + value2)            
            
   ※zipの引数は、2個だけに限定されていない。3つでも4つでも(便利!!!)    

 

 

思ってたより、使いやすいかも(長年逃げ続けてきたのに)