リスト
次のプログラムは、リストpの税抜金額を税込金額に計算しリストp_taxに保存しています。
1 2 3 4 5 6 7 8 |
p = [100,280,150,400,230] p_tax = [] for v in p: ans = int(v * 1.1) p_tax.append(ans) print(p_tax) |
【実行結果】
上記をシンプルに記述できる内包表記があります。
1 2 3 4 |
p = [100,280,150,400,230] p_tax = [ int(v * 1.1) for v in p] print(p_tax) |
内包表記の動作を分割し確認していきます。まずfor命令が実行されます。
リストpの個数繰り返しながら変数vに値が設定されていきます。
3 |
・・・・・・・・・・・・for v in p・・ |
次に変数の編集です。
変数vを1.1倍にして税込金額を計算し、int命令で整数にしています。
3 |
・・・・int(v * 1.1)・・・・・・・ |
最後にリストへの追加です。
変数の編集で計算された結果をリストp_taxに追加しています。
1 |
p_tax =・・・・・・・・・・・・・ |
二次元
掛け算の九九を二次元のリストで定義しました。そして7×8に該当する値を表示しています。※インデックスは0から始まるのでmulti[6][7]としています
1 2 3 4 5 6 7 8 9 10 11 12 13 |
multi = [ [1,2,3,4,5,6,7,8,9], [2,4,6,8,10,12,14,16,18], [3,6,9,12,15,18,21,24,27], [4,8,12,16,20,24,28,32,36], [5,10,15,20,25,30,35,40,45], [6,12,18,24,30,36,42,48,54], [7,14,21,28,35,42,49,56,63], [8,16,24,32,40,48,56,64,72], [9,18,27,36,45,54,63,72,81], ] print(multi[6][7]) |
【実行結果】
プログラムで九九の表を生成するには次のように記述します。
1 2 3 4 5 6 7 |
multi2 = [] for i in range(1,10): row = [] for j in range(1,10): row.append(i * j) multi2.append(row) |
3行目のforで1~9を生成しながら繰り返しています(一の段、二の段・・・)
3 |
for i in range(1,10): |
5行目のforで掛け合わせる1~9を生成しながら繰り返しています。そしてリストrowに計算結果を追加しています。
5 6 |
for j in range(1,10): row.append(i * j) |
1段の計算が完了したならリストmulti2に1段分の結果(row)を追加しています。
7 |
multi2.append(row) |
内包表記で生成すると次のよう1行で記述できます。
1 |
multi3 = [ [i*j for j in range(1,10)] for i in range(1,10)] |
判断
条件により値を生成することができます。
1~9まで値を生成する際に、3を省くには次のように記述します。
1 2 |
ans = [j for j in range(1,10) if j != 3] print(ans) |
【実行結果】
1行目のif != 3が条件で、変数iが3以外の値を生成しています。
その他データ型
集合、辞書もリストと同様に内包表記で生成できます。
1~4の集合を生成するには次のように記述します。
1 2 |
ans = {j for j in range(1,5)} print(ans) |
【実行結果】
リストとの違いは[]が{}に代わるだけです。
キーワードを1~4、値をキーワードの2乗とする辞書を生成するには、次のように記述します。
1 2 |
ans = {j:j**2 for j in range(1,5)} print(ans) |
【実行結果】