Index ソフト・ハード Python | 基礎など |
内包表記 その他の制御文 反復(繰り返し) 選択(条件分岐) 優先順位 比較演算子 累積代入文 算術演算 算術演算子 型変換関数 標準出力など 機能・要件 構成・方式など タスク ライブラリ 導入 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文を記述 入れ子の構造にする場合はインデントをさらにもう一段加える。 二重(二段)以上の入れ子にすることも可能演算子の優先順位 (優先度が高い順)
ブール演算子
比較演算子
累積代入文
算術演算 整数と実数で加算 -> 結果は実数 整数と整数で減算 -> 結果は整数 実数と整数で減算 -> 結果は実数 実数と整数で乗算 -> 結果は実数 整数と整数で除算 -> 結果は実数 整数と整数で切り捨て除算(//) -> 結果は整数 整数や実数と文字列の演算は基本的にエラー str と int の乗算は特別にサポート str 同士は足し算を行える。算術演算子
型変換関数
標準出力など ・標準出力(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()データを書き込む。 |
All Rights Reserved. Copyright (C) ITCL |