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

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

たまにしか書かないので、とにかく忘れる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 <パッケージ名>



バージョン確認

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')
プライバシーポリシー お問い合わせ