Python

勉強し始めたばかりなので、今はメモ代わり。

pip

パッケージ(ライブラリ?)をインストールしてくれるやつ。コマンドプロンプトで使う。

使い方:

pip <command> [options]

  • ヘルプ

pip -h

あるいは

pip

だけでも

  • インストール済みのパッケージを一覧表示

pip list

  • パッケージ詳細表示

pip show [パッケージ名]

  • パッケージのアップグレード

[パッケージ名]にpipを指定するとpip自身のupgradeも出来る

pip install --upgrade [パッケージ名]

OSモジュール

  • 作業フォルダパス

os.getcwd()

  • フォルダ作成。相対パスも可

os.mkdir(path)

コメント

  • コメントアウト

#コメント

文字列

  • 文字列の長さ

len(STRING)

  • 文字列のn+1番目の文字

STRING([n])

  • 文字の連結

STRING1 + STRING2

STRING1 += STRING2 も可能

  • 分割/置き換え

STRING.split()

STRING.replace('abc','def')

  • 右端の文字(a)の削除

STRING.rstrip('a')

  • 文字列フォーマット

% で文字列をフォーマットできる。コードはPython入門からの引用。

errmsg = "Can't open file"

errcode = 19042

msg = "ERROR: %s (%d)" % (errmsg, errcode)

print msg #=> ERROR: Can't open file (19042)

%s は文字列、%d は整数、%f は浮動小数点数、%x は16進数、%o は8進数、%% は %自身を示します。

print "%s" % "ABC" #=> ABC

print "%d" % 123 #=> 123

print "%f" % 1.23 #=> 1.23

print "%x" % 255 #=> ff

print "%o" % 255 #=> 377

print "%%%d" % 80 #=> %80

% に続く数値で文字幅や桁数を指定することができます。

print "|%5s|" % 'ABC' #=> | ABC| : 右寄せ5文字分

print "|%-5s|" % 'ABC' #=> |ABC | : 左寄せ5文字分

print "|%5d|" % 123 #=> | 123| : 右寄せ5桁

print "|%-5d|" % 123 #=> |123 | : 左寄せ5桁

print "|%+5d|" % 123 #=> | +123| : ±符号付き

print "|%5.2f|" % 1.23 #=> | 1.23| : 全体桁数.少数点以下の桁数

print "|%05d|" % 123 #=> |00123| : 0埋め

  • Unicodeに変換

javascriptのcharCode

ord('a')

  • Unicodeから文字

chr(97)

  • 大文字小文字

STRING.isupper()

STRING.islower()

文字列のときはisupperは「文字列に含まれる全ての英字が大文字かどうか」

文字列のときはislowerは「文字列に含まれる全ての英字が小文字かどうか」

  • リストを連結して文字列に

STRING.join(LIST)

javascript的に書くとLIST.join(STRING)なのに注意したい。

リスト

Pythonでは配列と呼ばんのか?
  • 作成

['a','b','c']

  • 追加 - pushと同じか

LIST.append(data)

タプル

変更できないリスト
  • 作成

('a','b','c')

辞書

個人的には辞書型という言葉に馴染みはないが、jsonとかそういう感じのやつか
  • 作成

d = {} #何も指定しなかったら空の辞書

d = {'one':1 , 'two':2 , 'three':3} #中身も一緒に作成

  • 追加

d['name'] = 'sakamoto'

セット(集合)

重複を認めないリスト的なもの。めっちゃよくね?便利かも。
  • リストから変換

L = ['a','b','c','d','a','b','c','d']

s = set(L)

インデックスで呼び出すとエラーになる。
  • 要素がを含むかどうか

'a' in SET #True/False

  • 集合の計算

A|B (和)

A-B (差)

A&B (積)

A^B (対称差)

for

{~} でブロックを指定するのではなくて、インデントで下げる。まぁ普段の書き方とさほど変わらんね。
  • 10回の繰り返し

for i in range(0,10):

  • リスト内を繰り返し

for i in LIST:

神かよ...
  • 何回目の繰り返しか拾う

abc = ['a',b','c']

for i , abc in enumerate(abc):

print(i)

print(abc)

while

これはまあ普通
  • 5未満の間繰り返し

i=0

while i<5 :

print(i)

i+=1

  • もちろんbreak可能

i=0

while i<5 :

print(i)

i+=1

break

if

コロンが必要なのね。elifってなんや。書くの楽やしええけど。
  • 書式

if 条件:

処理

elif 条件:

処理

else:

処理

標準入力

javascriptでいうところのprompt

input('ほげー')

型変換

  • 整数化

int( hoge )

  • 自動的に文字に変換(であってる?)

a = 10

b = 20

print('aは{0}でbは{1}である'.format(a,b))

Random

  • リストから指定した数だけランダムに抽出

random.sample(LIST,NUM)

Global?

  • 全てTrueかどうか判定

all ( iterable )

With

javascriptのwithとは違う

with open("FileName.txt") as f:

print f.read()

withの終わりと同時にオブジェクトの終了処理が実行される...らしい。ファイルのときはclose()が自動的に呼ばれる。他のときは?

関数

宣言がfunctionじゃない
  • 宣言

def myFunc(arg = "a"):

処理

return

使い方は普通。returnがないときはNoneを返す。

引数に=で値を与えるとデフォルト値になる。

  • 戻り値が複数

def func():

return 1,'A'

a,b = func()

print a, b #1 A

オブジェクトでまとめて返さなくてもいいのか!

ラムダ式

簡単な関数。式なので1行?

myfunc = lambda x, y: x+y

sorted(),map(),filter()に渡す関数としてよく使われるらしいです。

何ループ目か enumerate

for i , n in enumerate(L,2)

iに番号、nにリストLの内容が順番に入る。2個目の引数でスタートの数字を指定可能。なければ0。