数値
+ ・・・ 加算
- ・・・ 減算
* ・・・ 乗算
/ ・・・ 除算
// ・・・ 除算(結果は整数)
% ・・・ 剰余(除算の余り)
** ・・・ べき乗
優先順位
↑高い **
*, /, //, %
↓低い +, ー
文字列
"That's right." 'That\'s right.' '<a href="about.html">' 'Long' * 2 + 'Ago' → LongLongAgo
print(len('four')) 4
変数
変数と代入
変数 = 値 、 変数 = 式
変数名は、1文字目は半角の英文字にする。2文字目以降は半角の英文字か数字にする。単語の区切りは「_」であらわす。
複合演算子
+= ・・・ 加算
ー= ・・・ 減算
*= ・・・ 乗算
/= ・・・ 除算
//= ・・・ 除算(結果は整数)
%= ・・・ 剰余
**= ・・・ べき乗
a += 1 や a -= 1 など
インデスクとスライス
インデスク
指定した文字列から文字を取り出す。
文字列[インデスク]
x = 'abcde' print(x[3]) 'd' print(x[-1]) 'e'
スライス
文字列の一部から文字列を取り出す。
文字列[開始インデクス:終了インデスク] 変数[開始インデクス:終了インデスク] 式[開始インデクス:終了インデスク]
x = 'ApplePie' print(a[5:8]) 'Pie'
- 文字列[:終了] ・・・先頭から終了ー1まで
- 文字列[開始:] ・・・開始から末尾まで
- 文字列[:] ・・・すべて
リスト
複数の要素を確認できるデータ構造
[値, …]
初期化
menu = ['apple', 'orange', 'melon']
インデクス
menu = ['apple', 'orange', 'melon'] print(menu[1]) 'orange' print(menu[-1]) 'melon' menu[1] = 'pineapple' print(menu[1]) 'pineapple'
スライス
print(menu[1:3]) 'orange', 'pineapple'
- リスト[開始インデクス:終了インデクス]
- リスト[開始インデクス:終了インデクス:ステップ]
追加・挿入・削除
メソッドを使ってリストの値を操作する
- リスト.append(値) ・・・リストの末尾に要素を追加
- リスト.insert(インデクス, 値) ・・・指定した位置に要素を挿入
- リスト.remove(値) ・・・指定した値を持つ最初の要素を削除
- len(リスト) ・・・要素数を取得
menu.append('melon') print(menu) 'apple', 'orange', 'pineapple', 'melon' menu.remove('pineapple') print(menu) 'apple', 'orange', 'melon' menu.insert(2, 'melon') print(menu) 'apple', 'orange', 'melon', 'pineapple' print(len(menu)) 4
ミュータブルとイミュータブル
リストはミュータブル(値の変更が可能)だが、文字列はイミュータブル(値の変更が出来ない)
リストの結合
- リスト1 + リスト2 ・・・リスト1とリスト2を連結したリストを返す
- リスト1 += リスト2 ・・・リスト1にリスト2を結合する
list1 = ['a', 'b', 'c'] list2 = ['e', 'f', 'g'] list3 = list1 + list2 print(list3) 'a', 'b', 'c'
タプル
リストと同様に複数の要素を格納できるイミュータブルなデータ構造でインデックスやスライスも同様に扱える。
(値, …)
t = ('apple', 250) print(t) ('apple', 250) print(t[0]) 'apple' print(t[0:2]) ('apple', 250)
パック
タプルを変数に代入する事。この際()を省略できる
t = 'apple', 250 print(t) ('apple', 250)
アンパック
変数から値を取り出す
fruits, price = t print(fruits) 'apple'
リストとタプル
menu = [('apple', 250), ('melon', 600)] print(menu) ('apple', 250), ('melon', 600)
集合
集合はリストやタプルと同様に複数の要素を格納できるデータ構造でミュータブルである。重複する要素は格納できない。要素の順番が保証できない。要素の有無を高速に調べられる。
初期化
{値, …}
fruits = {'apple', 'melon', 'orange'} print(fruits) 'apple', 'melon', 'orange'
in演算子とnot in演算子
値 in 集合 値 not in 集合
print('apple' in fruits) True print('apple' not in fruits) False
要素の追加と削除
要素の追加
集合 |= {値, … }
fruits |= {'pineapple'} print(fruites) {'apple', 'melon', 'orange', 'pineapple'}
要素からの削除
集合 -= { 値, … }
fruits -= {'orange'} print(fruites) {'apple', 'melon', 'pineapple'}
集合の演算
集合A & 集合B ・・・ 積集合(集合Aと集合Bに共通する要素)
集合A | 集合B ・・・ 和集合(集合Aと集合Bのすべての要素)
集合A - 集合B ・・・ 差集合(集合Aから集合Bを削除した集合)
集合A ^ 集合B ・・・ 対象差(集合Aまたは集合Bの一方だけが含む要素)
辞書(=連想配列)
2つの値をペアにして登録する、複数の要素を格納できるデータ構造。一方の値をキーと呼ぶ。キーを使ってもう一歩運バリューにアクセスできる。
{キー:値, …}
menu = { 'apple': 250, 'melon': 600 } print(menu) { 'apple': 250, 'melon': 600 }
要素の追加と変更
辞書[キー] = 値
menu['orange'] = 100 print(menu) { 'apple': 250, 'melon': 600, 'orange': 100 }
要素の削除
del 辞書[キー]
del menu['apple'] print(menu) {'melon': 600 }
要素の有無
キー in 辞書 キー not in 辞書
print('apple' in menu) True print('apple' not in menu) False
制御構文
if文
if 式A: 式AがTrueの時の処理 elif 式B: 式BがTrueの時の処理 else: 式Aも式BもFalseの時の処理
if a > 0: print('plus') elif a < 0: print('minus') else: print('zero')
a == b aとbが等しければTrue a != b aとbが異なればsTrue a < b aがbより小さい時True a > b aがbより大きい時True a <= b aがb以下の時True a >= b aがb以上の時True X and Y XかつY X or Y XまたはY not X Xではない
for文
for 変数 in イテラブル: 処理 …
イテラブル(iterable)は、繰り返し対象にできるオブジェクトで、例えば文字列、リスト、タプル、集合、辞書などを言う。for文はこのイテラブルから値を1つ取り出すごとに処理を実行し、取り出せる値がなくなるまで繰り返す。
menu = {'apple', 'orange', 'melon'} for i in menu: print(i) apple orange melon
range(終了値) range(開始値, 終了値) range(開始値, 終了値, ステップ)
開始値から(開始値を省略した場合は0から)終了値までステップ値(省略した場合は1)ずつ増加する整数を生成する。
for i in range(1, 10, 2): print(i, end=' ') 1 3 5 7 9
menu = {'apple', 'orange', 'melon'} for i, j in enumerate(menu, 1000): print(i, j) 1000 apple 1001 orange 1002 melon
while文
while 式: 処理 …
条件に基づいて繰り返しを行う。
i = 0 while i < 100: print(i, end=' ') i += 2
break文とcontinue文とelse
for 変数 in イテラブル: if 式: break if 式: continue else: 処理
while 式: if 式: break if 式: continue else: 処理
breakは繰り返し処理を中断しループから抜け出す。continueは繰り返し処理の以降の処理をせず次の処理のために先頭に戻る。else部は、forもしくはwhileがbreakで終了しなかった時に処理されます。
for i in range(1,3): if i == 3: break else: print(i)
関数
関数の定義
def 関数名(引数,…): 処理 … return 戻り値
- def: 関数を定義する時に用いるキーワード。definition(定義)の略
- 関数名: 関数の名前。命名は変数の規則と同じ
- 引数: 関数に渡す値。0個でも複数でも可能。位置もしくはキーワードで引数を渡すことが出来る
- インデント: 関数内で処理する内容はインデントが必要。複数行で記載できる
- return文: 呼び出し元に戻り値を伴って処理が戻る
def add(x, y): return x+y print(add(2, 3)) 5 print(add(y=3, x=2)) 5
スコープ
変数のスコープ
- グローバル変数: 関数の外側で兵議した変数でそのファイル全体がスコープとなり関数の内部・外部両方で使える
- ローカル変数: 関数の内側で定義した変数でその関数の内側がスコープになり、関数の内側でだけ使える
x = 10 def f(): print(x) print(f()) 10
def f(): x = 10 print(x) --- NameError: name 'x' is not defined
global文とnonlocal文
def f(): global x x = 10 x = 20 f() print(x) --- 10
def f(): def g(): nonlocal x x = 10 x = 20 g() print(x) f() --- 10
オブジェクト
複数のデータをまとめて取り扱ったり、保持しているデータに対してメソッドという処理を介してデータにアクセスする仕組み。