前提
以下のような二次元リストを作成しました。
python
1x = [[-2, 7, -2], [0, -4, -4], [2, -3, -2], [-3, -4, -4], [-4, 0, -4]]
実現したいこと
これらの数字に+1してその後に3で割り算したいです。しかし、x[1][0]とx[4][2]は0なので計算せず0は0のままにしたいです。
つまり、このような計算手順になります。
①-2を足したとき、
python
1x_1 = [[-4, 5, -4],[0, -6, -6],[0, -5, -4],[-5, -6, -6],[-6, 0, -6]]
②3で割った時、
python
1x_2 = [[-1.33, 1.67, -1.33], [0, -2, -2], [0, -1.67, -1.33], [-1.67, -2, -2], [-2, 0, -2]]
となります。
試したこと
まず、①の計算をする時に、数字が0であった場合は計算しないという風なコードを作ればいいと思ったのでif文を使いたくなりました。
python
1x = [[-2, 7, -2], [0, -4, -4], [2, -3, -2], [-3, -4, -4], [-4, 0, -4]] 2 3for s in x: 4 for x_1 in s: 5 print(x_1)
このようなコードを書くと、リストxに格納されているすべての数字が取り出せます。
続いて、print(x_1 - 2)としたときは、このようになります。
python
1x = [[-2, 7, -2], [0, -4, -4], [2, -3, -2], [-3, -4, -4], [-4, 0, -4]] 2 3for s in x: 4 for x_1 in s: 5 print(x_1 -2) 6#出力結果 7-4 85 9-4 10-2 11-6 12-6 130 14-5 15-4 16-5 17-6 18-6 19-6 20-2 21-6
すべての数字に-2を足した値が出力されました。
続いて、if文でリストxの中身が0だった場合計算しないというコードを作りました。
python
1x = [[-2, 7, -2], [0, -4, -4], [2, -3, -2], [-3, -4, -4], [-4, 0, -4]] 2 3for s in x: 4 for x_1 in s: 5 if x_1 == 0: 6 continue 7 else: 8 print(x_1 -2) 9 10#出力結果 11-4 125 13-4 14-6 15-6 160 17-5 18-4 19-5 20-6 21-6 22-6 23-6
これだと、x_1にはリストxにあった0が格納されていない(スキップされた)ので実現したいことと異なってしまいました。
ここまで、考えてどのようにすれば解決できるのか分からなくなってしまったので質問します。
ここが分かれば3で割った時はprint(x_1 -2)をprint(x_2/3)にすれば値が求められると思います。
回答4件
あなたの回答
tips
プレビュー