ITP1_7_A - Gradingここをクリックして編集します.
Pythonではswitch文に相当するものがないため、if/elifの連結で書いてます。 そのままですね。 ITP1_7_B - How many ways?1 から n までの数の中から、重複無しで3つの数を選びそれらの合計が x となる組み合わせの数を求めるプログラムです。 ここをクリックして編集します.
ITP1_7_C - Spreadsheet表の行数rと列数c、r × c の要素を持つ表を読み込んで、各行と列の合計を挿入した新しい表を出力します。 ここをクリックして編集します.
row.append(sum(row))の部分で各行の合計を計算して、行の末尾に加えてからprint()で行の出力を行っています。 また、各行の出力毎にs_rowに列方向の和を積算していきます。 最後に、各列の総和が入っているs_rowを合計行として出力しています。 ITP1_7_D - Matrix Multiplicationn×m の行列 Aと m×l の行列 Bとの積を計算するプログラムです。 n×l の行列 Cを出力します。 ここをクリックして編集します.
欲張って、1行にまとめてしまったのでちょっとわかりづらくなってしまいましたが、内容としては行列Aの各行毎に(for A_r in A: の部分) [sum([x*y for x,y in zip(A_r,[B_r[k] for B_r in B])]) for k in range(l)] をやっています。 これも少し分解すると、行列Bの列毎に(for k in range(l)の部分) sum([x*y for x,y in zip(A_r,[B_r[k] for B_r in B])]) で行列Aのある行と行列Bのある列の要素毎の積を計算してその合計を算出して、リストを作っています。 [B_r[k] for B_r in B]の部分は行列Bのk列のリストを作っています。 他の方のコードを見ると、zip(*B)として、Bをunzipして行列Bの列の要素のまとまりを作成するというやり方もあるようです。そうすると簡潔に書けますね。 感想
0 コメント
あなたのコメントは、承認後に掲載されます。
メッセージを残してください。 |