grr

Python 3 簡易基本チートシート(下書き)

Python 3 簡易基本チートシート(下書き)

python3_sheet.md

Python 3.6.5

Python 3 学習情報

Python>>> About>>> Getting Started
https://www.python.org/about/gettingstarted/
The Python Tutorial 3.6.5
https://docs.python.org/3.6/tutorial/index.html#the-python-tutorial
Python チュートリアル 3.6.5
https://docs.python.jp/3/tutorial/index.html
Python 3.6.5 documentation
https://docs.python.org/3/index.html
Python 3.6.5 ドキュメント
https://docs.python.jp/3/index.html
Dive Into Python 3
http://www.diveintopython3.net/
Dive Into Python 3 日本語版
http://diveintopython3-ja.rdy.jp/
(書籍)詳細!Python3入門ノート
https://honto.jp/netstore/pd-book_28495507.html
(学習サイト)【世界で5万人が受講】実践 Python データサイエンス | Udemy
https://www.udemy.com/python-jp/learn/v4/
(学習サイト)Python入門 | 10秒で始めるAIプログラミング学習サービスAidemy[アイデミー]
https://aidemy.net/courses/3010

基本

ステートメント(命令文)の区切りは 改行 もしくは ; (セミコロン) インデントは4文字スペースが標準。

プリント(画面に出力等)
print(値1,値2, sep="区切り文字", end="行末文字") エスケープシーケンス
\n 改行 \t タブ \" ダブルクオート \\ バックスラッシュ
例:print("文書\n文書")

計算

print("1 + 2",end=" = ")
print(1 + 2)

a = ((3+2)/2+10) * 10 # = 125
print("a =","((3+2)/2+10) * 10 =",a)

#小数点の丸め
print("round(a/c*100) % =",round(a/c*100),"%")
#切り上げ切り下げはmathモジュール
数値演算子

+ - * /
// (小数点以下切り捨て)
% (割ったあまり)
** (累乗)

文字列演算子

+連結 *nn回の繰り返し

代入演算子

a += 1 (a = a + 1)
+= 足す -= 引く
*= /= //= %= **=

文字の操作

text = "Shimbun Yomiuri"

#文字列[位置]
#Shimbun Yomiuri
#前から 0,1,2,,,
print(text[8],end="") #Y
#後ろから -1,-2,-3,,,
print(text[-6],end="") #o
#スライス
print(text[10:15]) #miuri
print(text[8:8+7],end=" ") #Yomiuri

#最初からある文字まで
print(text[:7]) #Shimbun

#ステップで抜き出す
print(text[6:10:3]) #no
print(text[::5]) #Sum

演算子

比較
== != > >= < <=

論理
and or not

ビット演算子
& | ^ -

シフト
<< >>

type() 整数 int 浮動小数 float 文字列 str
str() 数値から文字列への変換
int() 整数への変換
float() 浮動小数点への変換

isinstance(オブジェクト,クラス)インスタンスの確認(一致でTrueを返す)

変数

Pythonは定数なし(大文字の変数で表現)
文字は、大文字、小文字のアルファベット、数字、アンダーバー_が使用できる。 予約語は使用できない 先頭に数字は使用できない

関数

関数(引数,引数2)

組み込み関数

数値 : print() 出力 abs()絶対値 max(数値1,数値2,,,,)最大 min(数値1,数値2,,,,)最小 round(数値,桁)数字の丸め 等
文字列 : chr(整数) ord(文字) Unicode変換 len(文字列)文字数(2バイト文字も1文字換算) 等
出入力 : print() input(説明)ユーザー入力 open()ファイル 等

モジュール

import モジュール名,モジュール名2,,,
import モジュール名 as 名(として用いる)
from モジュール名 import 関数名 (as 名(として)) 関数のみ
(関数として読み込んだ場合、使うためにモジュール名の指定は必要ない)

モジュール名.関数()モジュールの関数を使用

import math
math.floor(15.4) #切り捨て
math.sin(1) #.sin() , .cos(1) , .tan(1)
math.pi #定数
math.degrees(math.pi) #radianからdegreesへの変換

文字列のメゾット

s = "Pythonオブジェクト"
print(s) #Pythonオブジェクト
print(type(s)) #<class 'str'>

print(s.upper()) #PYTHONオブジェクト
print(s.lower()) #pythonオブジェクト
print(s.swapcase()) #pYTHONオブジェクト
print(s.count("n")) #1
print(s.find("n")) #5 無ければ-1
print(s.replace(検索文字列,置換文字列,回数)) #検索文字列の置換
format()
#Python 3.5
s = "{0} {2} Python {1} Bot"
print(s.format(10,"Market","New"))
s = "{t} Python {n} Bot"
print(s.format(t = "New",n = "Market"))
#Python 3.6
t = "New"
n = "Market"
s = f"{t} Python {name} Bot" #最初にfもしくはF
print(s)

条件分岐(if)

True 1, Falseとみなされないなんらかの値
False 0, None, 0.0, 空の値

if 条件:
    処理1
else: #Falseの場合
    処理2
if 条件:
    処理1
else: #Falseの場合
    処理2
if 条件1:
    処理1
elif 条件2:#条件1がFalseの場合のみ
    処理2
else: #両方Falseの場合
    処理3

test = a if a>b else b 特殊な書き方(Trueならa、Falseならb)

繰り返し(while)

条件がTrueの間、処理を繰り返す

while 条件:
    処理
    #条件判定(while)を再度行う
else
    処理2(whileがFalseの場合)

break 繰り返しを止める else処理は行われない
continue 中断しwhile判定を再度行う

繰り返し(for)

for 変数 in データ群 : range(開始,終了,ステップ)

#n回の繰り返し
#iにrange(n)を順番に入れる
for i in range(n):
    処理1
else
    処理2
#3×3の位置
for x in range(3):
    print()
    for y in range(3):
        print(f"({x},{y})",end="")

(Pythonではカウンタは使わない)

例外処理(try)

try :
    処理
except :
    エラー時の処理
finally :
    最後に実行する処理(exceptの場合でも実行)
try :
except 例外 :
else :
try :
    test = "a"
    int(test)
except ValueError :
    print("ValueError")
except ZeroDivisionError :
    print("ZeroDivisionError")
except Exception as exception:
    print(exception)
except BaseException as base_exception:
    print(base_exception)
else :
    print("done")

リスト

(Pythonにはリストの他、似たものとして、ダブル、辞書、配列(NumPy)がある)
list[要素,要素,要素] list[値1,値2,値3]

a = 1
b = 2
c = 3
list = [a,b,c]
print(list) #[1,2,3]

[1, 2, 3]

変数の値がリストに入る。

zeros = [0]*5
text = ["text",".txt"]*2

[0, 0, 0, 0, 0]
['text', '.txt', 'text', '.txt']

list()

a = list(range(-5, 6, 2))

[-5, -3, -1, 1, 3, 5] #ステップで奇数のみのリスト

a = list("word")

['w', 'o', 'r', 'd']

a[0] インデックス番号
a[1] = "check" listはimmutableではなくmutableなので変更できる
a[0] = ["b","c"]多重(多次元)リスト
IndexError 存在しないインデックス番号
.append(値) リストの最後に要素を追加
.insert(位置,値) リストの指定位置に要素を挿入
.pop(値)リストの最初か最後を抜き取る(0,-1)
.remove(位置)リストの指定位置を抜き取る (delによる定義の削除も可能)

a = ["A","B","C"]
if "B" in a:
    a.remove("B")
print(a)

['A', 'C']

.split(セパレータ) 文字列を区切りでリスト化する
セパレータ.join(リスト) リストをセパレータで文字列化する

リストの連結、分割、複製、比較

リストA + リストB 連結
リスト += ["要素"] 最後に連結
リストA.extend(リストB) 連結
リスト[開始:終了(:ステップ)] 分割(スライス)
リストA = リストB 同じオブジェクトのリスト is確認
リスト.copy()複製 リスト[:]複製 list(リスト)複製

リストの並び替え

リスト.sort() 並び替え 小から大 AからZ 大文字から小文字
リスト.sort(reverse = True) 並び替え(降順) 大から小
sorted(リスト) 並び替え 元のリストを書き換えない
sorted(リスト,reverse = True) 並び替え(降順) 書き換えない
リスト.reverse() 逆順
リスト.sort(key = len) 比較関数 文字列の長さで並び替え
sorted(リスト, key = str.lower) 比較関数 大文字小文字の区別をしない
random.shuffle(リスト) randomモジュール ランダムに並び替え 書き換えない

リストの取り出し

当てはまる要素を順に取り出す

for 単語 in リスト :
    print(単語)

enumerate() カウントする

for i, 単語 in enumerate(リスト, 1)
    print(f"{i} {単語}")

zip() リストの同時操作

リスト内包表記

[変数Aの処理 for 変数A in リスト]

a = [1, 2, 3, 4] c = [b*5 for b in a] print(c)

[変数Aの処理 for 変数A in リスト if 条件]

a = [1, 2, 3, 4] c = [b for b in a if 1 < b < 4] print(c)

リストの要素を検索

要素 in リスト 一致 TrueもしくはFalse
リスト.index(要素) 一致する要素の位置
リスト.count(要素) 一致する要素の数
sum(リスト) 合計 max(リスト) 最大 min(リスト) 最小

#一部文字列(一部の単語等)の検索
a = ["ok","test"]
b = "te"
for i in a:
    if b in i:
        result = True
        break
print(result)

リストの要素のランダムな取り出し

import random
a = ["ok","test"]
result = random.choice(a)
print(result)

ランダムな10個の数値リスト

from random import randint
numbers = []
while len(numbers)<10 :
    n = randint(0,100)
    if n in numbers:
        continue
    numbers.append(n)
print(numbers)

タプル

タプルはimmutable(作成後にその状態を変えることのできないオブジェクト)

a = 1,
b = (0,1,2)
(c, d) = (1, 2)
c, d = 1, 2

tuple() タプルへの変換

セット(集合)

set() セットへの変換 重複する要素は除外される 要素に順番はない a = set() 空集合

.add() .remove() .discard() .clear() .pop()
frozenset()
.union() .intersection() .difference() .symmetric_difference()
& - ^ == != |= &= -=
.update() .intersection_update() .difference_update() .symmetric_difference_update() .isdisjoint()
.issubset() <= .issuperset() >=

辞書

{名前:値,名前:値}
要素はイミュータブル
dict()

a = dict(news=1,mail=2,search=3)

辞書A.update(辞書B) del 辞書[名前] .copy() .get() in

関数

引数無し、戻り値有り

def 関数名()
    処理
    return 戻り値

引数有り、戻り値有り

def 関数名(引数)00
    引数を使用した処理
    return 戻り値

pass 処理が未定の場合に用いる return None 処理を途中で抜ける

def triangle(base, height):
    area = base * height / 2
    return area

a = triangle(15,13)

print(a)

関数内で定義された変数はローカル変数であり、全体で利用されるグローバル変数とは異なる。関数内でもグローバル変数は利用することができる。
位置引数とキーワード引数がある。引数には初期値が設定できる。
*引数名 *を頭につけ引数をタプルで指定 (*args **kwargs)
sys.argv コマンドラインからの引数

def calc(a,*arg):
    #処理
    return arg
print(calc("a","b","c"))

関数オブジェクト

def do(func):
    func()
def a():
    print("Hi!")
b = print
b("Hello World!")
do(a)

クロージャ(関数閉包)(関数内関数)

def closure_1(a):
    def closure_2(b):
        return a * b
    return closure_2
c = closure_1(10)
print(c(2))

無名関数 (lambda式)

#def a(x,y):
#    return x + y
#print(a(2,5))

b = lambda x, y : x + y
print(b(2,5))

a = (lambda x,y : x + y)(2,5)

ソート関数

def sort(a):
    list = ["A","C","B"]
    b = list.index(a)
    return b
list = ["A","A","B","B","C"]
list.sort(key = sort)
print(list)

map()

map(関数,イテラブル)

fillter()

fillter(関数,イテラブル)

イテレータ(iterator)

list = ["A","C","B"]
a_iter = iter(list)
print(next(a_iter))
print(next(a_iter))

ジェネレータ(generator)

def generator_a():
    yield "A"
    yield "B"
    yield "C"
abc = generator_a()
print(next(abc))
print(next(abc))

クラス定義

クラス名の一文字目は大文字にするのが慣例
第1引数にはselfが慣例

class Aa:
    def __init__(self,color = "赤"):
        self.color = color
        self.score = 0
    def add(self,score):
        self.score += score
        msg = f"{self.color} : {score}点加算、合計点数は {self.score}点"
        print(msg)

player1 = Aa("赤")
player2 = Aa("青")
print(f"プレイヤー1 : {player1.color}")
print(f"プレイヤー2 : {player2.color}")
player1.add(15)
player2.add(5)
player1.add(10)
player2.add(5)
print(f"プレイヤー1 : {player1.score}点")
print(f"プレイヤー2 : {player2.score}点")

クラスメゾット

class Aa:
    group = "A"
    num = 0

    @classmethod
    def count(cls):
        cls.num += 1
        print(f"追加{cls.num}")

    def __init__(self,color = "白"):
        Aa.count()
        self.serial = Aa.num
        self.color = color
        self.score = 0
    def add(self,score):
        self.score += score
        msg = f"{self.color} : {score}点加算、合計点数は {self.score}点"
        print(msg)

player1 = Aa("赤")
player2 = Aa("青")
player3 = Aa("黄")
print(f"プレイヤー1 color:{player1.color}  serial:{player1.serial}  group:{player1.group}")
print(f"プレイヤー2 color:{player2.color}  serial:{player2.serial}  group:{player2.group}")
print(f"プレイヤー3 color:{player3.color}  serial:{player3.serial}  group:{player3.group}")
player1.add(15)
player2.add(5)
print(f"プレイヤー1 : {player1.score}点")
print(f"プレイヤー2 : {player2.score}点")

クラスの継承

class Aa:
    a = "A"
class Bb(Aa):
    b = "B"
c = Bb()
print(c.a)

オーバーライド

#サブクラス
    def 上書きする関数名(self,引数)

super()

プロパティ

__変数名 非公開のインスタンス変数
@property ゲッター関数 @プロパティ.setter セッター関数

ファイル操作

モジュールの再読み込み

import importlib
importlib.reload(モジュール名)