チートシート (ラボクオリティなので、ご利用は自己責任でお願いします)
【 基本 】
制御構文  リスト  タプル  辞書  集合(set)  高階関数など  ファイル関連  圧縮・解凍  エラー関連  pip 

制御構文
if文  for文  while文


・if文

False:False,0,None,空
True:False以外の値

if文を1行で書く

animal = 'dog'
print('True') if animal=='dog' else print('False')
制御構文に戻る

・for文

breakしなかった場合にelse文実行

for i in range(10):
    print(i, end=' ')
#     if i >= 5:
#         break
else:
    print('Done!')

インデックスを振る

animal_list = ["dog", "cat", "bird"]
for i, animal in enumerate(animal_list):
    print(i, animal)

ジェネレータ(メモリ節約〜メモリ不足エラー回避)

generator = (i for i in range(100000000))
print(generator)
print(next(generator), next(generator), next(generator))
for i, v in enumerate(generator):
    print(v, end=' ')  
    if i==10:
        break
print('Done!')
制御構文に戻る

・while文
import time
count = 0
while True:
    count += 1
    print(f'\r{count}', end='')
    time.sleep(0.2)
    if count >= 10:
        print('\nDone!')
        break
制御構文に戻る

リスト
リストをつくる  リスト操作など  リストのコピー


・リストをつくる

リストをつくる

print('l = list()')
l = list()
print(l)
print('================================')
print('l = list(range(10))')
l = list(range(10))
print(l)
print('================================')
print("l = list('abcde')")
l = list('abcde')
print(l)
print('================================')
print("l = 'a b c d e'.split()")
l = 'a b c d e'.split()
print(l)
print('================================')
print('l = []')
l = []
print(l)
print('================================')
print('l = [1,2,3,4,5]')
l = [1,2,3,4,5]
print(l)

リスト内包表記

print('l = [i for i in range(10)]')
l = [i for i in range(10)]
print(l)
print('=======================================================')
print("l = ['偶数' if x%2==0 else '奇数' for x in range(0,6)]")
l = ['偶数' if x%2==0 else '奇数' for x in range(0,6)]
print(l)
print('=======================================================')
print('多重リスト')
print('l = [[] for _ in range(10)]')
l = [[] for _ in range(10)]
print(l)
print('=======================================================')
print('l = [[[] for _ in range(3)] for _ in range(3)]')
l = [[[] for _ in range(3)] for _ in range(3)]
print(l)
リストに戻る

・リスト操作など

サイズ、長さ

l = list(range(10))
print(l)
print('len(l)')
print(len(l))

スライス

l = list(range(10))
print('l =', l)
print('l[::2](1つ飛ばし)')
print(l[::2])
print('====================================')
print('l[::-1] (逆順)')
print(l[::-1])

ソート

l = list(range(9,-1,-1))
print('l =', l)
print('l = sorted(l) (昇順)')
l = sorted(l)
print(l)
print('====================================')
print('l.sort(reverse=True) (降順)')
l.sort(reverse=True)
print(l)
print('====================================')
print('l.sort() (昇順)')
l.sort()
print(l)
print('====================================')
print('l.reverse() (逆順)')
l.reverse()
print(l)
print('====================================')
print('key(例:末尾文字)でソート')
l = ['abc', 'acb', 'bca']
print(l)
print('l.sort(key=lambda x: x[-1])')
l.sort(key=lambda x: x[-1])
print(l)
リストに戻る

値を挿入・追加・リストを結合する

l = list(range(6))
print('l =', l)
print('index指定で値を挿入')
print('l.insert(3, 100)')
l.insert(3, 100)
print(l)
print('==========================================')
print('末尾に値を追加')
print('l.append(100)')
l.append(100)
print(l)
print('==========================================')
print('末尾にリストを結合')
l2 = list(range(2))
print('l2 =', l2)
print('l.extend(l2)')
l.extend(l2)
print(l)
print('l += l2')
l += l2
print(l)

値を削除する

l = list(range(10))
print('l =', l)
print('値を指定(重複は若いindexから削除)')
print('l.remove(5)')
l.remove(5)
print(l)
print('======================================')
print('index指定(指定なしは末尾から削除)')
print('l.pop(0)')
l.pop(0)
print(l)
print('======================================')
print('index指定で空代入')
print('l[5:] = []')
l[5:] = []
print(l)
print('======================================')
print('index指定で削除')
print('del l[0]')
del l[0]
print(l)
print('======================================')
print('すべての値を削除')
print('l.clear()')
l.clear()
print(l)

値のindexを返す、検索

l = list(range(10))
print('l =', l)
print('.index(value, 検索開始index)')
print('l.index(5, 0)')
print(l.index(5, 0))
print('====================================')
print('numpy(indexリストを返す)')
print('import numpy as np')
import numpy as np
print('np.where(np.array(l)==3)[0]')
print(np.where(np.array(l)==3)[0])
print('====================================')
print('代入リストを返すことも可')
print('np.where(np.array(l)==3, 1, 0)')
print(np.where(np.array(l)==3, 1, 0))
print('====================================')
print('要素を検索(bool) ')
print('3 in l')
print(3 in l)
print('3 not in l')
print(3 not in l)
リストに戻る

合計、最大値、最小値、カウント

l = list(range(10))
print('l =', l)
print('合計')
print('sum(l)')
print(sum(l))
print('====================================')
print('最大値')
print('max(l)')
print(max(l))
print('====================================')
print('最小値')
print('min(l)')
print(min(l))
print('====================================')
print('要素数カウント')
print('l.count(5)')
print(l.count(5))

文字列分割・結合

print('文字列分割(分割文字,数指定可)')
s = 's t r i n g s'
print('s =', s)
print('s.split(" ", 3)')
print(s.split(" ", 3))
print('=========================================')
print('文字列結合')
l = ['a', 'b', 'c']
print('l =', l)
print('" ".join(l)')
print(" ".join(l))
print('=========================================')
print('単純な文字列分割・結合')
s = 'strings'
print('s =', s)
print('list(s)')
print(list(s))
print('=========================================')
l = list(s)
print('l =', l)
print('"".join(l)')
print("".join(l))
リストに戻る

・リストをコピーする

浅いコピー

print('代入')
l = [i for i in range(10)]
print('l =', l)
print('l2 = l')
l2 = l
print('l2[0] = 100')
l2[0] = 100
print('l =', l)
print('=========================================')
print('浅いコピー、最上位のみ')
l = [i for i in range(10)]
print('l =', l)
print('l2 = l.copy()')
l2 = l.copy()
print('l2[0] = 100')
l2[0] = 100
print('l =', l)
print('=========================================')
l = [[i for i in range(3)] for i in range(3)]
print('l =', l)
print('l2 = l.copy()')
l2 = l.copy()
print('l2[0][0] = 100')
l2[0][0] = 100
print('l =', l)

深いコピー

print('from copy import deepcopy')
from copy import deepcopy
l = [[i for i in range(3)] for i in range(3)]
print('l =', l)
print('l2 = deepcopy(l)')
l2 = deepcopy(l)
print('l2[0][0] = 100')
l2[0][0] = 100
print('l =', l)
リストに戻る

タプル

タプルをつくる  タプルを連結する  アンパッキング


・タプルをつくる
print('t = (1, 2, 3)')
t = (1, 2, 3)
print(t)
print('==============')
print('t = 1, 2, 3')
t = 1, 2, 3
print(t)
print('==============')
print('t = 1,')
t = 1,
print(t)
print('==============')
print('t = ()')
t = ()
print(t)
print('==============')
print('t = (1,)')
t = (1,)
print(t)
print('==============')
print('t = tuple()')
t = tuple()
print(t)
タプルに戻る

・タプルを連結する
print('(1,2,3) + (4,5,6)')
print((1,2,3) + (4,5,6))
タプルに戻る

・アンパッキング
print('x, y = 1, 2')
x, y = 1, 2
print('x =', x, ', y =', y)
print('===============')
print('x, y = y, x')
x, y = y, x
print('x =', x, ', y =', y)
タプルに戻る

辞書

key:イミュータブル immutable(変更不可)
value:ミュータブル mutable(変更可)


辞書をつくる  key・辞書を追加する  key,valueを取得する  削除関連


・辞書をつくる

辞書をつくる

print('d = dict()')
d = dict()
print(d)
print('==================================')
print('d = {}')
d = {}
print(d)
print('==================================')
print("d = {'a': 1, 'b':2}")
d = {'a': 1, 'b':2}
print(d)
print('==================================')
print('d = dict(a=1, b=2)')
d = dict(a=1, b=2)
print(d)
print('==================================')
print("d = dict([['a',1], ['b',2]])")
d = dict([['a',1], ['b',2]])
print(d)
print('==================================')
print("d = dict([('a',1), ('b',2)])")
d = dict([('a',1), ('b',2)])
print(d)
print('==================================')
print("d = dict(zip(['a','b'], [1,2]))")
d = dict(zip(['a','b'], [1,2]))
print(d)
print('==================================')
print("d = dict(['ab', 'cd', 'ef'])")
d = dict(['ab', 'cd', 'ef'])
print(d)

辞書内包表記

print("d = {k:v for k,v in zip('a b c'.split(), [1,2,3])}")
d = {k:v for k,v in zip('a b c'.split(), [1,2,3])}
print(d)
print('====================================================')
print('初期値設定')
print("d = {i:0 for i in range(5)}")
d = {i:0 for i in range(5)}
print(d)
辞書に戻る

・key・辞書を追加する
d = {'a':1, 'b':2}
print('d =', d)
print("d['c'] = 3")
d['c'] = 3
print(d)
print('=========================================')
print('keyがない場合は値を代入してkeyを作る')
print("d.setdefault('d', 4)")
print(d.setdefault('d', 4))
print(d)
print('=========================================')
print('keyがある場合はkeyを作らず値を返す')
print("d.setdefault('d', 5) ")
print(d.setdefault('d', 5) )
print(d)
print('=========================================')
print('辞書を追加')
print("d.update({'e': 5})")
d.update({'e': 5})
print(d)
辞書に戻る

・key,valueを取得する
d = {'a': 1, 'b': 2}
print('d =', d)
print('keyを取得')
print('d.keys()')
print(d.keys())
print('=========================')
print('valueを取得')
print('d.values()')
print(d.values())
print('=========================')
print('for文でkey,valueを取得')
print('for k,v in d.items():')
print('    print(k,v)')
for k,v in d.items():
    print(k,v)
print('=========================')
print('keyを取得')
print("d.get('a')")
print(d.get('a'))
print('=========================')
print("d.get('c', 'not exist')")
print(d.get('c', 'not exist'))
print('=========================')
print('keyの確認')
print("'a' in d")
print('a' in d)
print("'f' not in d")
print('f' not in d)
辞書に戻る

・削除関連

d = {'a': 1, 'b': 2, 'c': 3}
print('d =', d)
print('keyを指定して削除')
print("del d['a']")
del d['a']
print(d)
print('===============================')
print('辞書ごと削除')
print('del d')
del d
try:
    d
except:
    print('d not exist')
print('===============================')
d = {'a': 1, 'b': 2, 'c': 3}
print('d =', d)
print('内容を空にする')
print('d.clear()')
d.clear()
print(d)
print('===============================')
d = {'a': 1, 'b': 2, 'c': 3}
print('d =', d)
print('指定したキーを削除')
print("d.pop('b')")
d.pop('b')
print(d)
print('===============================')
print('末尾を削除')
print('d.popitem()')
d.popitem()
print(d)
辞書に戻る

集合(set)

集合をつくる  集合の操作など


・集合をつくる

print('s = {1, 2, 3}')
s = {1, 2, 3}
print(s)
print('===========================')
print('s = set()')
s = set()
print(s)
print('===========================')
print('s = set([1, 2, 3])')
s = set([1, 2, 3])
print(s)
print('===========================')
print('集合内包表記')
print('s = {i for i in range(5)}')
s = {i for i in range(5)}
print(s)
集合に戻る

・集合の操作など

値を追加する

s = {1, 2, 3}
print('s = {1, 2, 3}')
print('s.add(100)')
s.add(100)
print(s)

値を削除する

s = {1, 2, 3}
print('s =', s)
print('値を指定して削除')
print('s.remove(3)')
s.remove(3)
print(s)
print('==================')
print('値をすべて削除')
print('s.clear()')
s.clear()
print(s)

値を検索する

s = {1, 2, 3}
print('s =', s)
print('3 in s')
print(3 in s)
集合に戻る

和、差、積、対称差

print('和(union)')
print('{1, 2, 3} | {2, 3, 4} ')
print({1, 2, 3} | {2, 3, 4} )
print('=============================================')
print('{1, 2, 3}.union({2, 3, 4})')
print({1, 2, 3}.union({2, 3, 4}))
print('=============================================')
print('差(difference)')
print('{1, 2, 3} - {2, 3, 4}')
print({1, 2, 3} - {2, 3, 4})
print('=============================================')
print('{1, 2, 3}.difference({2, 3, 4})')
print({1, 2, 3}.difference({2, 3, 4}))
print('=============================================')
print('積(intersection)')
print('{1, 2, 3} & {2, 3, 4}')
print({1, 2, 3} & {2, 3, 4})
print('=============================================')
print('{1, 2, 3}.intersection({2, 3, 4})')
print({1, 2, 3}.intersection({2, 3, 4}))
print('=============================================')
print('対称差(symmetric difference)')
print('{1, 2, 3} ^ {2, 3, 4}')
print({1, 2, 3} ^ {2, 3, 4})
print('=============================================')
print('{1, 2, 3}.symmetric_difference({2, 3, 4})')
print({1, 2, 3}.symmetric_difference({2, 3, 4}))

部分集合(subset)・上位集合(superset)の判定

print('部分集合かどうか')
print('{1, 3} <= {1, 2, 3}')
print({1, 3} <= {1, 2, 3})
print('======================')
print('{1, 4} <= {1, 2, 3}')
print({1, 4} <= {1, 2, 3})
print('======================')
print('上位集合かどうか')
print('{1, 2, 3} >= {1, 3}')
print({1, 2, 3} >= {1, 3})
print('======================')
print('{1, 2, 3} >= {1, 4}')
print({1, 2, 3} >= {1, 4})
集合に戻る

高階関数など

フィルター関数  マップ関数  ラムダ式  アスタリスク


・フィルター関数
print('list(filter(lambda x: x>2, [1,2,3,4,5]))')
print(list(filter(lambda x: x>2, [1,2,3,4,5])))
print('============================================')
print('list(filter(lambda x: x%2==0, range(10)))')
print(list(filter(lambda x: x%2==0, range(10))))
高階関数などに戻る

・マップ関数
print('list(map(lambda x: x*2, range(10)))')
print(list(map(lambda x: x*2, range(10))))
print('=====================================')
d = {0:'dog', 1:'cat'}
print('d =', d)
print('list(map(lambda x: d[x], [0,1,0,1]))')
print(list(map(lambda x: d[x], [0,1,0,1])))
高階関数などに戻る

・ラムダ式(無名関数)
print('f = lambda x: print(x)')
f = lambda x: print(x)
print("f('lambda!')")
f('lambda!')
print('====================================')
print('(lambda x,y: x*y)(5,10)')
print((lambda x,y: x*y)(5,10))
print('====================================')
print('偶数の場合2倍し、奇数は0にする')
print('f = lambda x: x*2 if x%2==0 else 0')
f = lambda x: x*2 if x%2==0 else 0
print('f(1), f(2), f(3), f(4)')
print(f(1), f(2), f(3), f(4))
高階関数などに戻る

・アスタリスク
print('可変長の引数を受け取れる')
print('ef args_func(arg, *args, **kwargs):')
print('    print(arg)')
print("    print('tuple:', args)")
print("    print('dict:', kwargs)")
def args_func(arg, *args, **kwargs):
    print(arg)
    print('tuple:', args)
    print('dict:', kwargs)
print('===============================================================')
print("args_func('arg', 'args1', 'args2', kwargs1='a', kwargs2='b')")
args_func('arg', 'args1', 'args2', kwargs1='a', kwargs2='b')
print('===============================================================')
print('args_func(1, 2, 3, 4, 5, a=1, b=2, c=3)')
args_func(1, 2, 3, 4, 5, a=1, b=2, c=3)
高階関数などに戻る

ファイル関連

エンコーディングの種類:utf-8, utf-8-sig, Shift_JIS, CP932, EUC-JP, latin_1, etc


ディレクトリの中のファイルリストをつくる

各種ファイルの書き出し・読み込み

テキスト  pickle  csv  json



・ディレクトリの中のファイルリストをつくる
import glob
import os

BASE_DIR = os.getcwd()

# ファイル・ディレクトリ作成
os.makedirs('sub', exist_ok=True)
with open('hello.txt', mode='w', encoding='utf-8') as f:
    f.write('Hello, AI!')
with open('sub/hi.txt', mode='w', encoding='utf-8') as f:
    f.write('Hi, AI!')

# 指定したディレクトリのテキストファイル
dir_files = glob.glob(BASE_DIR + "/*.txt")
print(dir_files)

# 配下すべてのテキストファイル
all_files = glob.glob(BASE_DIR + "/**/*.txt", recursive=True)
print(all_files)
ファイル関連に戻る

・テキストファイルの書き出し・読み込み
# ファイル書き出し
with open('hello.txt', mode='w', encoding='utf-8') as f:
    f.write('Hello, AI!\n')
    f.write('Thank you!')

# ファイル読み込み
with open('hello.txt', mode='r', encoding='utf-8') as f:
    text = f.read()
print(text)

with open('hello.txt', mode='r', encoding='utf-8') as f:
    # リスト(1行ずつリストに格納)
    l = f.readlines()
print(l)
ファイル関連に戻る

・pickleファイルの書き出し・読み込み
import pickle
# 書き出し
with open('hello.pkl', mode='wb') as f:
    pickle.dump('Hello, pickle!', f)
# 読み込み
with open('hello.pkl', mode='rb') as f:
    print(pickle.load(f))
ファイル関連に戻る

・csvファイルの書き出し・読み込み
import csv
# 書き出し、newline=''は改行回避
with open('sample.csv', 'w', newline='') as f:
    csv_writer = csv.writer(f, delimiter=',')
    csv_writer.writerow(['a','b'])    
    csv_writer.writerows([[1,2],[3,4]])
# 読み込み 
with open('sample.csv', encoding='utf-8') as f:
    csv_data = csv.reader(f)
    data_lines = list(csv_data)
print(data_lines)

# Pandas
import pandas as pd
# 読み込み
df = pd.read_csv('sample.csv', encoding='utf-8')
# 書き出し
df.to_csv('sample2.csv', index=False)
df2 = pd.read_csv('sample2.csv', encoding='utf-8')
print(df2)
ファイル関連に戻る

・jsonファイルの書き出し・読み込み
import json
j = {
    "a": "1",
    "b": "2",
    "c": "3"
}
# 書き込み
with open('sample.json', 'w') as f:
    json.dump(j, f)
# 読み込み
with open('sample.json', 'r') as f:
    j = json.load(f)
    j = json.dumps(j, indent=2)
print(j)
ファイル関連に戻る

圧縮・解凍

zipファイル  tarファイル


・zipファイルの圧縮解凍
import glob
import os
import zipfile

# ディレクトリ・ファイル作成
BASE_DIR = os.getcwd()
os.makedirs('sub', exist_ok=True)
with open('hello.txt', mode='w', encoding='utf-8') as f:
    f.write('Hello, AI!')
with open('sub/hi.txt', mode='w', encoding='utf-8') as f:
    f.write('Hi, AI!')

# zipファイルに圧縮 
with zipfile.ZipFile('hello.zip', 'w') as f:
    f.write('hello.txt', compress_type=zipfile.ZIP_DEFLATED)

# ディレクトリごと配下を圧縮
with zipfile.ZipFile('sub.zip', 'w') as z:
    for f in glob.glob('sub/**', recursive=True):
        z.write(f)

# zipファイルを解凍
with zipfile.ZipFile('sub.zip', 'r') as z:
    # カレントディレクトリ
    z.extractall()
    # ディレクトリ指定
    z.extractall('ex_zip')
圧縮・解凍に戻る

・tarファイルの圧縮解凍
import os
import tarfile

# ディレクトリ・ファイル作成
BASE_DIR = os.getcwd()
os.makedirs('sub', exist_ok=True)
with open('sub/hi.txt', mode='w', encoding='utf-8') as f:
    f.write('Hi, AI!')

# tar.gzファイルに圧縮
with tarfile.open('sub.tar.gz', 'w:gz') as t:
    # ファイル・ディレクトリを指定
    t.add('sub')

# tar.gzファイルを解凍
with tarfile.open('sub.tar.gz', 'r:gz') as t:
    # カレントディレクトリ
    t.extractall()
    # ディレクトリ指定
    t.extractall('tar_sub')
圧縮・解凍に戻る

エラー関連

エラー(Error,例外)処理


・エラー(Error,例外)処理
import sys
try:
    print('エラーが起きる可能性のある処理')
    a
except:
    print('エラーが起こった場合の処理')
    print('エラー内容:', sys.exc_info()[:2])
else:
    print('エラーがなかった場合の処理')
finally:
    print('最終的に必ず行う処理')
エラー関連に戻る

pip

バージョン確認など  インストール関連  アップグレード関連 
・バージョン確認など
# ヘルプ
pip -h

# pipバージョン確認
pip -V 
pip --version

# 詳細情報確認
pip show pip

# インストール済みのライブラリ+バージョン表示
pip list
pipに戻る

・インストール関連
# ライブラリのインストール
pip install library_name

# インストール可能なバージョン確認(error)
pip install library_name==

# バージョン指定(範囲も可)
pip install library_name==version
pip install "library_name>=version,<version"

# ファイルからインストール(同ディレクトリからの場合、パスも可)
pip install ….tar.gz
pip install ….whl

# Gitからインストール(git+リポジトリURL)
pip install git+https://github.com/…

# requirements.txtの作成とインストール
pip freeze > requirements.txt
pip install -r requirements.txt

# アンインストール
pip uninstall library_name
pipに戻る

・アップグレード関連
# 更新可能なライブラリ表示
pip list -o

# pipのアップグレード
pip install --upgrade pip
pip install -U pip
# windows
python -m pip install --upgrade pip

# ライブラリのアップグレード
# バージョン指定でダウングレードも可
pip install -U library_name
pip install -U library_name==downgrade_version
pipに戻る