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

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

ただいまの
回答率

90.52%

  • Python 3.x

    6367questions

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

python 2次元リスト 任意の値削除

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 89

zeitaku_fire

score 18

li=[[1,1,1,1],[2,2, 5,2],[100, 1, 0, 0,]]

li_1=[]
for i in li:
    li_1.append([num for num in i if num != 2])
print(li_1) #[[1, 1, 1, 1], [5], [100, 1, 0, 0]]


2次元リストから、2を削除して出力しています。

質問1:下記を1行で済ませる方法がありましたら、ご教授願いたいです。

for i in li:
li_1.append([num for num in i if num != 2])

質問2:filterを使って実現する方法がありましたら、こちらもご教授願いたいです。
※下記のようなコードになると思うのですが。
「li_1=list(filter(lambda x:x != 2,li))」

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

li = [[1, 1, 1, 1],
      [2, 2, 5, 2],
      [100, 1, 0, 0]]

if True:  # 内包表記版とfilter版を切り替えるための、実質コメントアウトのif(TrueをFalseに書き換えるとfilter版に)
    li_1 = [[n for n in line if n != 2] 
            for line in li]  # 二重のリスト内包表記。一行で書いても良いけど、読めなくなるからおすすめしない
else:
    li_1 = [list(filter(lambda x:x!=2, line)) 
            for line in li]  # filter版。見てわかる通りかえってよみにくい。こういう使い方では内包表記に対してメリットはない

print(li_1)  # => [[1, 1, 1, 1], [5], [100, 1, 0, 0]]

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/05 04:25

    いつもありがとうございます。
    読みにくいですね。

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    python リスト型 remove文

    data = [1,1,2,1,3,4] for num in data: if data.count(num) < 2: data.remove(num) return d

  • 解決済

    pythonでfor文の多重構造を作る

    前提・実現したいこと リストから数字を1つ取り出し、数字の数だけランダムな数字を発生させる。それらの数字の総和をとる。 この動作をリストの要素回行う。 最後にリストのそれぞれ

  • 解決済

    matplotlibのplotによる描画が上手くいきません。

    matplotlibのplotによる描画が上手くいきません。 プログラミング初心者です。 pythonのmatplotlibというパッケージを使って、以下の関数の描画を行いたい

  • 解決済

    空欄の行をはじいて解析する

    前提・実現したいこと あるデータの解析をしたいと思っています。 745164EA 80 00 00 00 31 00 32 00 7332CD3F 080159.008 07081

  • 解決済

    python3 リストの一括削除等

    前提・実現したいこと pythonでリストの勉強をしております。 多数の数値を格納しているリストを、例えば100以下の数値は一括して削除、もしくは他の数値や文字列に一括して変更する

  • 解決済

    python 文字列を判定する方法

    何らかのstr型が連続して格納されている配列(例['100'],['.'],['abc'])の各要素を判定し、数値ならint型に変換後次要素の判定に移る、数値ではないのであればfa

  • 解決済

    辞書のキーが重複した時、キー名_1のようにキー名をつけて辞書に情報を格納したい

     前提・実現したいこと 辞書のキーが重複した時、キー名_1のようにキー名をつけて辞書に情報を格納したい。  発生している問題・エラーメッセージ エラーは発生していないが、辞書の

  • 解決済

    100個の配列を自動的に作りたい

    100個の配列を自動的に作りたいです。 今、    tmp1 = [] tmp2 = [] tmp3 = [] ・ ・ ・ とコードを書いて配列を生成しています。 これを

同じタグがついた質問を見る

  • Python 3.x

    6367questions

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