質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

4527閲覧

Python3 2次元配列をスライスして列指定の合計を求める

opyon

総合スコア1009

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/09/29 12:30

ある問題で入力データから2次元配列に代入して処理させようとしていた時にうまくいかず時間が掛かっていたので方針を変えて入力データから2つの1次元配列に分けて処理させてなんとか正解は出ました。

その後for文(コードは省略)なら出来たのですが、2次元配列のままで1次元配列と同じように書くと期待する結果が得られませんでした。

# うまくいかなかった2次元配列の例 ans = [sum(src[i:i+cnt][1]) for i in range(len(src)-cnt+1)]

####知りたいこと
2次元配列をスライスして列指定した合計を求める方法が知りたいです。
この例ですとsrc配列からスライスして[0,0],[1,10],[2,20]、その中から列[1]の合計を求める部分が知りたいです。
ご教示頂けると助かります。

Python3

1# 入力データ 2# 0 10 3# 1 20 4# 2 30 5# 3 40 6# input()入力処理は省略 7 8# 2次元配列のまま処理した場合 9src = [[0,0],[1,10],[2,20], [3,30], [4,40]] 10cnt = 3 11ans = [sum(src[i:i+cnt][1]) for i in range(len(src)-cnt+1)] 12print(ans) 13 14#期待する出力結果 15#[30, 60, 90] 16 17#間違った出力結果 18#[11, 22, 33]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんな感じですかね。

python

1src = [[0,0],[1,10],[2,20], [3,30], [4,40]] 2cnt = 3 3ans = [sum(x[1] for x in src[i:i+cnt]) for i in range(len(src)-cnt+1)] 4print(ans) # => [30, 60, 90] 5

元のコードでうまくいかない理由

sumされる中身を見れば納得できるかと。

python

1src = [[0,0],[1,10],[2,20], [3,30], [4,40]] 2cnt = 3 3 4a = [src[i:i+cnt] for i in range(len(src)-cnt+1)] 5print(a) # => [[[0, 0], [1, 10], [2, 20]], [[1, 10], [2, 20], [3, 30]], [[2, 20], [3, 30], [4, 40]]] 6 7b = [src[i:i+cnt][1] for i in range(len(src)-cnt+1)] 8print(b) # => [[1, 10], [2, 20], [3, 30]] 9

投稿2018/09/29 12:37

編集2018/09/29 12:43
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

opyon

2018/09/29 13:08

ありがとうございます。 そういうことでしたか! 入れ子にすればよかったのですね。 これを参考に色々試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問