Prog-me.

Rails中心、機械学習も、インフラもセキュリティも

機械学習とかでPythonを取りあえず使いたい!って人のためのチートシート

 

リスト

sales = [33,24,67,34]
print len(sales) #4
print sales[2] #67

存在チェック

print 24 in sales #true

print range(10) #=>0から1の配列を返す
print range(3,10,2) #=>3から始まる、2とばしの10以下の配列

並べ替え

sales.reverse #=>単に要素の順番を逆にする
sales.sort #=>小さい順に並ぶ
大きい順に並べるには sales.sort.reverse

文字列をリストに split

d = "2013/12/15"
print d.split("/") #=> ["2913","12","13"]

リストを文字列に join

a = ["a","b","c"]
print "-".join(a) #=> a-b-c 

タプル(変更できない) ()

a = (2,5,8)
リストと同じようにlenとかメソッド使える
print len(a) #3
print a * 3 #(2,5,8,2,5,8,2,5,8)

セット(集合型,重複を許さない) ([])

a = set([1,2,3,4,1])
print a #=> [1,2,3,4] 1が無視される、重複なので

集合の計算ができる

a = set([3,4,5])
和集合を出してみよう
print a | b #=> [1,2,3,4,5]

辞書型データ {}

keyとvalueがセットになったもの
sales = {"shiho": 100, "yamada":50}
print sales["shiho"]

中身を変えるには

sales["shiho"] = 900

keyが存在するか

"shiho" in sales #true

キーの一覧

sales.keys()

valueの一覧

sales.values()

キーもvalueも

sales.items()

条件分岐

if

score = 70
  if score > 60 : 
  print "OK"

繰り返し

for

sales = [23,45,266]
sum = 0

for sale in sales:
  print sale 
  sum += sale
else:
  print sum

elseというのは、ループが終わった時の処理を指す!

for i in range(10) で0から10までやってくれる
  if i == 3:
     continue(3をスルー) /  break(3でブレイク, 0,1,2だけ)

辞書型のデータで繰り返し

sales = {"shiho": 100, "yamada":50}
for key, value in sales.iteritems(): 
  print "key: %s value: %d" % (key,value)

while

n = 0
  while n < 10:
    n += 1
    print n
  else:
    print "end"
    

関数を使ってみる

def hello(name)
  print "hello %s" % name
#実行
hello("yoko")
      

リストのそれぞれの要素に関数の処理をやらせる map

def double(x)
  return x * x #二乗させる関数

map(double, [2,5,8])  #map(関数, リスト)
  

無名関数 lamda

print map(lamda x: x*x, [2,5,8])
 #=> [4,25,64]

オブジェクト (変数と関数をまとめたもの)

クラス:オブジェクトの設計図
インスタンス:クラスを実体化したもの

 class User(object): 
   def __init__(self, name)
     self.name = name
     
   def greet(self): 
     print "my name is %s" % self.name
     
 shiho = User("shiho")
 print shiho.name
 print shiho.greet()

スライスを使った文字列, リストの取得 :

インデックス

  • 文字列オブジェクト[開始インデックス: 終了インデックス]
0   1   2   3   4   5
 | A | B | C | D | E |
#文字

str = "ABCDE"
slice = str[1:3] #"BC"

slice = str[1:-1] #"BCD"

#終了インデックスを省略すると、自動的に最後の文字の次のインデックスが指定されたことになる
slice = str[1:] #BCDE

# 参考 http://www.pythonweb.jp/tutorial/string/index11.html