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

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

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

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

Q&A

解決済

1回答

738閲覧

Python、多次元配列につきまして

Behemoth

総合スコア29

Python 3.x

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

0グッド

0クリップ

投稿2018/07/01 06:56

編集2018/07/01 07:37

Python初心者のものです。

たとえば、[[a,"Tokyo"],[b,"sapporo"],[c,"Chiba"],[d,"Tokyo"]]といったような二次元配列があるとします。
この二次元配列の要素の中で、k二番目の要素に"Tokyo"を持つ要素を削除する、といった場合(上記の例の場合、[[b,"sapporo"],[c,"Chiba"]] といった配列を返したい)、どのように実装すればよいのでしょうか?
for文を使って試したのですが、うまくいきませんでした。
どなたかよろしくお願いいたします。

a = [["a","Tokyo"],["b","sapporo"],["c","Chiba"],["d","Tokyo"]] for i in range(len(a)): if a[i][1] == "Tokyo": del a[i]

こちらをためしたところIndexErrorがでてしまいました。

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

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

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

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

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

mather

2018/07/01 07:21

for文を使って試したのですが、うまくいきませんでした。とありますが、こちらのコードを提示してください。
Behemoth

2018/07/01 07:31

for i in range(len(ary)): if a[i][1] == "Tokyo": del ary[i] はじめこのようにしたのですが、delで要素を削除した際にlengthも変化するため、indexErrorが出ているのでは、と考えました。
Behemoth

2018/07/01 07:31

コード、改行なしで失礼します。
mather

2018/07/01 07:34

そちらのコードを質問に追記してください。これもちゃんと質問をするための練習です。「IndexErrorが出ているのでは、と考えました。」というのは実際にエラーが出たんですか?
Behemoth

2018/07/01 07:35

承知しました。ご指導ありがとうございます。
guest

回答1

0

ベストアンサー

a,b,c,d の変数が具体的に何かわからないので以下のサンプルコードは文字列としてます。

for を使う方法

python

1target = [["a","Tokyo"],["b","sapporo"],["c","Chiba"],["d","Tokyo"]] 2result = [] 3for element in target: 4 if element[1] != "Tokyo": 5 result.append(element)

リストを順番に操作している最中にリストそのものを更新するようにしてしまうと、間違いが起こり易いです。そのため、結果リストを別に作るなど工夫する方がいいと思います。
また、リストを for で処理するときは、長さでループするのも常套手段ですが、直接値を使う方法も覚えておきましょう。

別解: filter を使う方法

python

1target = [["a","Tokyo"],["b","sapporo"],["c","Chiba"],["d","Tokyo"]] 2result = list(filter(lambda x: x[1] != "Tokyo", target))

投稿2018/07/01 07:39

編集2018/07/01 07:44
mather

総合スコア6753

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

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

Behemoth

2018/07/01 07:44

詳しい回答をありがとうございます。 お手数をおかけしました。 以後、質問する際はmatherさんに教えていただいたことをきちんとしたいと思います。 また、よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問