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

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

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

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

Q&A

解決済

2回答

4604閲覧

python 多次元配列 pop

takechanshukat1

総合スコア2

Python 3.x

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

0グッド

0クリップ

投稿2020/07/01 01:01

編集2020/07/01 01:24

前提・実現したいこと

Python初心者です。
dataの[1][1][1]番地をpop(popなのでdataの要素は削除)したいのですがpopは多次元配列に対応していなくてどう書けばいいかわからなくなってしまいました。解決策教えていただきたいです。

該当のソースコード

Python

1 data = [[80, 45, 39, 76, 100,60], 2 [[72, 66, 70, 80, 59,66], 3 [22, 26, 20, 20, 29,88]]] 4 5 6chosed_row_data = data.pop([1][1][1]) 7 8""" 9>>>data 10 11[[80, 45, 39, 76, 100,60], 12 [[72, 66, 70, 80, 59,66], 13 [22, 20, 20, 29,88]]] 14 15>>>chosed_row_data 16 1726 18 19""" 20

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

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

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

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

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

y_waiwai

2020/07/01 01:07

popしたあとはどういう配列になると思ってるんでしょうか
takechanshukat1

2020/07/01 01:09

dataの[1][1][1]番地が削除された配列になります
quickquip

2020/07/01 01:17

括弧の数が合ってないのでコードを書き直しましょう。 そしてその例に対して「実行した後に期待する結果」も書きましょう(というのが y_waiwaiさんが言っていることでしょう)
y_waiwai

2020/07/01 01:25

削除とは?具体的にどうなると考えてるのか提示しましょう
takechanshukat1

2020/07/01 01:30

「該当のソースコード」にアウトプットを記載しました。解決策のソースコードをお願いします。
guest

回答2

0

他次元配列に対する各要素のアクセス方法をきちんと理解していますか?

質問文のコードは3次元配列にもなっていないので、サンプルで以下のような333の3次元配列を用意します。

python

1data = [[[ 0, 1, 2], 2 [ 3, 4, 5], 3 [ 6, 7, 8]], 4 5 [[ 9, 10, 11], 6 [12, 13, 14], 7 [15, 16, 17]], 8 9 [[18, 19, 20], 10 [21, 22, 23], 11 [24, 25, 26]]]

dataの1次元目の配列、すなわちdata[0]data[1]data[2]がそれぞれどうなっているかわかりますか?
試しにdata[1]をprintすると以下のようになります。

python

1# dataの第1次元目の要素アクセス 2print('data[1]:',data[1]) 3# >>> data[1]: [[9, 10, 11], [12, 13, 14], [15, 16, 17]]

data[1]は真ん中の、要素数3*3の2次元配列でした。では、この2次元配列からさらに1番目の配列を参照したい場合はどうしますか?data[1]に、通常の配列参照時と同様に添え字を追加してあげればよいです。

python

1# dataの第2次元目の要素アクセス 2print('data[1][1]:',data[1][1]) 3# >>> data[1][1]: [12, 13, 14]

またしても真ん中の1次元配列を取得できました。
目的の、popしたい要素はこの配列の1番目の要素です。一般的な配列に対するpop構文はご存じでしょう。配列.pop(添え字)ですね。なのでdata[1][1]に、一般的な方法と同様に書けばよいです。

python

1# popする 2data[1][1].pop(1)

このように、他次元配列に対する操作は添え字を1つずつ処理して目的の次元まで掘っていく必要があります。

投稿2020/07/01 01:53

hope_mucci

総合スコア4447

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

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

0

ベストアンサー

こんな感じでしょうか?

python

1data = [[80, 45, 39, 76, 100,60], 2 [[72, 66, 70, 80, 59,66], 3 [22, 26, 20, 20, 29,88]]] 4data[1][1].pop(1) 5data

実行結果

text

1[[80, 45, 39, 76, 100, 60], [[72, 66, 70, 80, 59, 66], [22, 20, 20, 29, 88]]]

投稿2020/07/01 01:43

Penpen7

総合スコア698

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問