たまにしか書かないので、とにかく忘れるPythonプログラミング
タイトル通りです。気分で適宜追加していきたいと思います。
個人的なメモです。
条件分岐(if文)
if x != 0: print("...") elif x >= 1: print("...") else: print("...")
x = True if a = "OK" else False
制御文(for文, while文)
for i in range(1,100): if i%2==0: print("even") else: print("odd")
逆順にしたいとき
for i in reversed(range(10)): ....
インクリメントする量を変えたい場合
for i in range(1,100,2): ←1, 3, 5...というようにiの値がインクリメントされる ....
無限ループ
while True: ....
リストの要素をループで周りたいとき。foreachみたいなやつ。
for i,name in enumerate(list): ....
内包(式 for 変数名 in イテラブル)
10以外の要素を取り出したいリストを作るときの例は以下。
x for x in list if not x==10
演算子
項目 | 演算子 | 例 |
否定 | not | not a == 1 |
かつ | and | a==1 and b==2 |
または | or | a==1 or b==2 |
商(整数) | // | a = 14 // 3 →aは4になる |
商(小数) | / | a = 14 / 3 →aは4.6666...になる |
累乗 | ** | 2**3 → 8になる |
絶対値 | abs(式) | |
余り | % | 10%3 →1になる |
存在 | in | 1 in array |
複数行
「"""」を使う。
文字列
print("""abc あああ""")
文
print \ print("""abc あああ""")
関数
引数xとyを加算した値を返す例。yのデフォルト引数は10とする。
def func(x, y=10): """ Return x+y :param x: int :param y: int :return: int sum of x and y """ return x+y
文字列
s = "abc"
大文字化と小文字化
s.upper() s.lower()
先頭のみ大文字化
s.capitalize()
フォーマット
⒮ = "{}は{}年に生まれた".format(strname, age)
結合
間に「,」をいれて結合とか。
three = "abc" result = ",".join(three) → 「a,b,c」になる
Trim
前後の空白文字削除
s=" a " s.strip() → 「"a"」になる
Split
,区切りで文字列を分割したい場合
s = "a,b,c" a = s.split(",") → a b cのリストになる
置換
str = "abc" str.replace("a","@") → 「"@bc"」になる
包含
ふくまれているかどうか
str = "abcatdef" "cat" in str "cat" not in str
部分スライス
インデックスnを削除したいとき
s[:n] + s[n+1:]
特定の文字列で始まっているか or 特定の文字列で終わっているか
str.startswith("old") str.endswith("x")
リスト
作成
colors = list() or colors = []
要素の追加
colors.append("red")
取り出し(取り出した要素は削除される)
a = colors.pop() a = colors.pop(i) ←特定の位置を取り出したいときはこう
値を指定した削除
colors.remove("red")
全消去
colors.clear()
要素数
colors = ["red", "green", "yellow"] len(colors) → 3
存在するか確認
if "green" in colors: ...
マージする
list.extend(list2)
全要素に適用
list = [i*2 for i in list]
偶数だけリストから削除したいときの例
list = [i for i in list if i%2==0]
削除
関数は使わずにdel文を使う。
del list[0]
範囲削除はスライスを使う。
スライスは[start:stop:step]
削除
インデックス2から8まで、2個飛びに削除する例。
del list[2:8:2] 0~9の要素の配列listに適用すると [0,1,3,5,7,8,9]となる。
全要素数
list.len()
要素ごとの出現回数
list.count('a')
タプル
複数の要素をひとまとめにしてもつもの。
基本的にconstで変更は不可能。
作成
a = tuple() or a = () a = ("M.Jackson", 1958, True)
辞書
作成
d = dict() or d = {} or d = {"Apple":"Red", "Banana":"Yellow"}
参照・更新
d["Apple"] = "Aka"
キーが存在するか
"Apple" in d
削除
del d["Apple"]
ループして全要素を表示や更新
for key in d: print(d[key]) d[key] = e
for k,v in d.items(): ...
モジュール
モジュールの関数や変数を直接使うときはfromを使う
from math import pi → piが使えるようになる
ファイル
path = os.path.join("C:","temp","a.txt") → WindowsならC:\temp\a.txtとなる st = open(path, "r", encoding="utf-8") 自動でクローズさせたければwithを使う。 with open(path, "r") as f: f.write(...)
csvで書き出し読み出し
with open("a.csv", "w", newline='') as f: w = csv.writer(f,delimiter=",") w.writerow(["one","two","three"]) r = csv.reader(f,delimiter=",") for row in r: print(",".join"row))
データ型を取得する
t = type(200.1)
正規表現
結果をlistで受ける場合
import re m = re.findall( "a+b.[0-9]", str, re.IGNORECASE) if m is not None: for word in m: ...
ヒットしたかどうかを確認する場合
m = re.match(pattern, content) → mがNone以外ならヒットしたことになる
クラス
定義
class Orange: recs = [] ←メンバ変数 def __init__(self, weight, color): ←こいつはC++等のコンストラクタ相当 print("Created.") self.weight = weight self.color = color self._private = 1 ←先頭_はprivateを表す def _unsafe(self): ←先頭_はprivateを表す ... def rot(self, days, temp): ←メンバ関数 """ 説明 """ self.mold = days * temp
インスタンス化
orl = Orange(10, "dark")
pip
pipインストール済みなのにpip not foundになる場合
pip3を試す。
pip3 install <パッケージ名>
インストール
pip install <パッケージ名>
特定のパッケージがインストールされているか確認する
pip list | grep <パッケージ名>
バージョン確認
import sys import platform print(sys.version) print(sys.version_info) print(platform.python_version()) print(platform.python_version_tuple())
出力結果
3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)] sys.version_info(major=3, minor=6, micro=4, releaselevel='final', serial=0) 3.6.4 ('3', '6', '4')