内包表記
 その他の制御文
 反復(繰り返し)
 選択(条件分岐)
 優先順位
 比較演算子
 累積代入文
 算術演算
 算術演算子
 型変換関数
 標準出力など

 機能・要件
 構成・方式など
 タスク
 ライブラリ
 導入
 Sample
 Error

 データ型
 ソースなど
 用語など
 内包表記
 ・forを使ったリスト内包表記
リスト内包表記は内包表記を使ってリストを生成
通常、内包表記を使う方がプログラムが高速に動作し、表記も簡潔
複雑なリスト内包表記は可読性が下がる。
例(内包表記)
[0, 1, 4, 9, 16, 25]
x = [i ** 2 for i in range(6)]
例(内包表記を使わず。)
x = []
for i in range(6):
   x.append(i ** 2)
 ・複数のforを使ったリスト内包表記
内包表記は2個以上のforを使うことができる。
複数のforを使うと多次元リストを生成できる。
例(内包表記)
x = [[i, j] for i in range(2) for j in range(2)]
[[0,0], [0, 1], [1, 0], [1, 1]]
 ・if句を使ったリスト内包表記
リストに追加するデータを限定できる。
例(内包表記)
x = [i ** 2 for i in range(6) if i % 3 != 0]
(0~5までの要素iのうち、3で割った剰余が0以外のもの(3の
倍数以外のもの)だけをi**2 したものを要素としたリストを生成)
print(x) ([1, 4, 16, 25]を表示)
例(内包表記を使わず。)
x = []
for i in range(6):
   if i % 3 != 0:
     x.append(i ** 2)
 ・集合内包表記 (要素の順序は不定)
集合の生成に内包表記
例(内包表記)
x = {str(i) * 3 for i in range(1, 4)}
{'111', '222', '333'}
 ・辞書内包表記 (要素の順序は不定)
辞書の生成に内包表記
例(内包表記)
x = {str(i): str(i) * 3 for i in range(1, 4)}
{'1': '111', '2': '222', '3': '333'}
 ・ジェネレータ内包表記
タプル生成のに内包表記を使用するとジェネレータを生成できる。
ジェネレータは必要なときに必要なデータのみを生成する。(メモリ節約)
for文で繰り返しの元となるデータとしてよく使われる。
ジェネレータはtuple()でタプルに 型変換できる。
ジェネレータ内包表記
x = (str(i) * 3 for i in range(1, 4))
生成したいジェネレータ(タプル)
('111', '222', '333')

 その他の制御文
 ・break文
ループ(for文、while文)のブロック内で使用
breakが評価されると、そのループのブロックから抜ける。
ループにelse節がある場合
ループがbreakせずに終了したら、その後にelse節を評価する。
ループがbreakして終了したときはelse節を評価しない。(飛ばす。)
 ・continue文
ループ(for文、while文)のブロック内で使用
ループの途中であってもそのループを終了し、次のループを行う。

for i in range(10):
   if i % 3 == 0:
     continue (ontinueが評価されると次のループを行う、print(i)は無し。)
   print(i)
・・・

 反復(繰り返し)
 ・while文
繰り返しの開始時に条件判定をする前判定型の制御文
条件を評価しTrueならばwhileのブロック(処理)を実行
ブロックの終端まできたら条件評価に戻る。
条件がTrueである間whileのブロック内の処理は実行され続ける。
 ・for文
リストやタプルなどの要素を一つずつ取り出して繰り返す処理の場合に用いる。
リスト、タプル、辞書、集合から要素を一つずつ取り出し変数に格納
辞書の場合はキーが取り出され変数に格納
要素が取り出せなくなったら繰り返しが終了
 ・range()関数 (3通りの使い方)
一定のルールに基づいたrangeオブジェクト型を生成
rangeオブジェクト型はリストやタプルに型変換できる。
例、x = list(range(10)) 、xはリスト型になる。
rangeオブジェクトは必要に応じて個々の要素を生成。(メモリ節約)
range(5):0~4の整数値のリストを生成
range(5,10):5~9の整数値のリストを生成
range(5,10,2):5~9まで2刻みの整数値のリストを生成
for i in range(1, 10, 2):
   print(str(i)) (1, 3, 5, 7, 9が表示)
 ・多重ループ (ループのブロック内にループを入れる。(ネストする。))
for文、while文を2重、3重・・・としていくことが可能

 選択(条件分岐)
 ・if文
条件がTrueのとき、ifのブロック(処理)を実行
条件がFalseのとき、何も実行しない。
処理の左側はインデントする。
 ・if-else文
条件がTrueのとき、ifのブロック(処理)を実行
条件がFalseのとき、elseのブロック(処理2)を実行
 ・if-elif-else文 (排他的な多岐選択で用いる。)
条件1がTrueのときifのブロックを実行、Falseのとき条件2を評価
条件2がTrueのときelifのブロックを実行、Falseのときelseのブロックを実行
elif文は複数定義することができる。
(複数のデータに対し複数の条件を並べるのは排他的な多岐選択ではない。)
相応しくない例
if var < 1:
・・・
elif foo == 1:
・・・
else (繰り返し)m > 1:
・・・
 ・if文の入れ子 (ネスト)
if文の処理ブロックの中にさらにif文を記述
入れ子の構造にする場合はインデントをさらにもう一段加える。
二重(二段)以上の入れ子にすることも可能

 演算子の優先順位 (優先度が高い順)
    演算子  説明 
 (expressions・・), [expressions・・],
{key:value・・}, {expressions・・}
 式結合またはタプル表示、リ
スト表示、辞書表示、集合表示
 x[index], x[index:index],
x(arguments...), x.attribute
 添字指定、スライス操作、
呼び出し、属性参照
 await x Await 式
 ** べき乗
 +x, -x, ~x 正数、負数、ビット単位NOT
 *, @, /, //, % 乗算、行列乗算、除算、剰余
 +, - 加算、減算
 <<, >> シフト演算
 & ビット単位AND
 ^ ビット単位XOR
 | ビット単位OR
 in, not in, is, is not, <,
<=, >, >=, !=, ==
 帰属や同一性のテストを
含む比較
 not x ブール演算NOT
 and ブール演算AND
 or ブール演算OR
 if ・・ else 条件式
 lambda ラムダ式

 ブール演算子
    論理演算子  意味 使用例 
 and AND:論理積(かつ) X and Y
 or OR :論理和(または) X or Y
 not NOT:否定 not X

 比較演算子
    演算  演算子 使用例   説明(正しくないとき、False) 
 > > var > 1 var が1 より大きいとき、True
 ≦ <= var <= 1 var が1 以下のとき、True
 < < var < 1 var が1 より小さいとき、True
 ≧ >= var >= 1 var が1 以上のとき、True
 = == var == 1 var と1 が等しいとき、True
 ≠ != var != 1 var と1 が等しくないとき、True
  in / not in 1 in var
1 not in var
 var(リスト、タプル、辞書、集合)の
要素に1が含まれているとき、True
not inは含まれないときTrue

 累積代入文
    演算子  目的 累積代入
演算子
 
 代入演算子
での書換え
 
 += 変数の値を増やす x += 3 x = x + 3
 -= 変数の値を減らす x -= 3 x = x - 3
 *= 変数の値をn倍にする x *= 3 x = x * 3
 /= 変数の値をnで割った商にする x /= 3 x = x / 3
 //= 変数の値をnで割った商にする x //= 3 x = x // 3
 %= 変数の値をnで割った余りにする x %= 2 x = x % 2
 **= 変数の値をn乗する x **= 3 x = x ** 3

 算術演算
整数と実数で加算 -> 結果は実数
整数と整数で減算 -> 結果は整数
実数と整数で減算 -> 結果は実数
実数と整数で乗算 -> 結果は実数
整数と整数で除算 -> 結果は実数
整数と整数で切り捨て除算(//) -> 結果は整数
整数や実数と文字列の演算は基本的にエラー
str と int の乗算は特別にサポート
str 同士は足し算を行える。

 算術演算子
    演算  意味  演算子   整数の例  実数の例 
 + 加算 + 32 + 5 :37 2.5 + 4.0 :6.5
 - 減算 - 32 - 5 :27 2.5 - 4.0 :-1.5
 × 乗算 * 32 * 5 :160 2.5 * 4.0 :10.0
 ÷ 除算 / 32 / 5 :6.4 2.5 / 4.0 :0.625
 // (商) 32 // 5 : 6 32.0 / 1.5 : 21.0
 %(剰余) 32 % 5 :2 32.0 % 1.5 :0.5
 ** べき乗 ** 2 ** 3 : 8 2 ** 0.5 : 1.414213562

 型変換関数
    変換する型  型変換関数  type()の出力 
 整数 int() <class 'int'>
 ブール bool() <class 'bool'>
 浮動小数点 float() <class 'float'>
 文字列 str() <class 'str'>
 リスト list() <class 'list'>
 タプル tuple() <class 'tuple'>
 辞書 dict() <class 'dict'>
 集合 set() <class 'set'>
 None  <class 'NoneType'>

 標準出力など
 ・標準出力(sys.stdout で標準出力(標準の出力先:ディスプレイ)へ書き込む)
ファイルオブジェクトとして表現
標準出力を表すオブジェクトはsysモジュールに保存
stdout ファイルオブジェクト
パイプの仕組みを利用できる。
プロセスA の標準出力をプロセスB の標準入力へ繋げる
write()でデータを書き込み
writelines()で行を書き込み
print()でデータを書き込む。
 ・標準入力(sys.stdin で標準入力を読み込む)
ファイルオブジェクトとして表現
標準入力を表すオブジェクトはsysモジュールに保存
stdin ファイルオブジェクト
read()で全データを読み込む。
read(1)で1文字だけ読み込む。
read(1)ですべてのデータをループで読み込む。
readlines()で複数行を読み込む。
readline()で一行読み込む。
readline()とループで全行を読み込む。
input()で一行読み込む。
 ・標準エラー出力(sys.stderr で標準エラー出力へ書き込む)
エラーなどのデータは標準エラー出力へ書き込む
標準エラー出力を表すオブジェクトはsysモジュールに保存
stderr ファイルオブジェクト
write()でデータを書き込む。
writelines()データを書き込む。