【 基本 】
制御構文 リスト タプル 辞書 集合(set) 高階関数など ファイル関連 圧縮・解凍 エラー関連 pip
制御構文
if文 for文 while文
・if文
・for文
・while文
リスト
リストをつくる リスト操作など リストのコピー
・リストをつくる
・リスト操作など
・リストをコピーする
タプル
タプルをつくる タプルを連結する アンパッキング
・タプルをつくる
・タプルを連結する
・アンパッキング
辞書
辞書をつくる key・辞書を追加する key,valueを取得する 削除関連
・辞書をつくる
・key・辞書を追加する
・key,valueを取得する
・削除関連
集合(set)
集合をつくる 集合の操作など
・集合をつくる
・集合の操作など
高階関数など
フィルター関数 マップ関数 ラムダ式 アスタリスク
・フィルター関数
・マップ関数
・ラムダ式(無名関数)
・アスタリスク
ファイル関連
ディレクトリの中のファイルリストをつくる
各種ファイルの書き出し・読み込み
・ディレクトリの中のファイルリストをつくる
・テキストファイルの書き出し・読み込み
・pickleファイルの書き出し・読み込み
・csvファイルの書き出し・読み込み
・jsonファイルの書き出し・読み込み
圧縮・解凍
zipファイル tarファイル
・zipファイルの圧縮解凍
・tarファイルの圧縮解凍
エラー関連
エラー(Error,例外)処理
・エラー(Error,例外)処理
pip
バージョン確認など インストール関連 アップグレード関連
・バージョン確認など
・インストール関連
・アップグレード関連
制御構文 リスト タプル 辞書 集合(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
ディレクトリの中のファイルリストをつくる
各種ファイルの書き出し・読み込み
・ディレクトリの中のファイルリストをつくる
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に戻る