結果だけでなく過程も見てください

日々の奮闘を綴る日記です。

たまにしか書かないので、とにかく忘れる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]
09の要素の配列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")
演算子オーバーロード

演算子「+」をオーバーロードする例

class Num:
  def __add__(self, other)
    return abs(self.n + other.n)

pip

pipインストール済みなのにpip not foundになる場合

pip3を試す。

pip3 install <パッケージ名>
インストール
pip install <パッケージ名>
特定のパッケージがインストールされているか確認する
pip list | grep <パッケージ名>
||

** バージョン確認
>python|
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')
プライバシーポリシー お問い合わせ