リスト.pop(インデックス), pop メソッドは引数に指定したインデックスの要素を取得した上でリストから削除します。インデックスが省略された場合にはリストの最後の要素が削除されます。, インデックスを使って指定した要素を取得した上で削除することができました。, 指定した値と同じ値を持つ要素をリストから削除する方法です。リスト型で利用可能な remove メソッドを使用します。, 引数に指定した値と同じ値を持つ要素(オブジェクトは異なって構いません)を削除します。リストの複数の要素で一致する場合には最初に一致した要素を削除します。, なお remove メソッドの引数に指定した値と一致する要素が見つからなかった場合には ValueError エラーが発生します。, 指定した値と同じ値を持つ要素をリストから削除することができました。, リストからすべての要素を削除する方法です。リスト型で利用可能な clear メソッドを使用します。, リストからすべての要素を削除します。, なおこのページの「スライス機能を使って要素を削除する」でご説明した方法で、リストの最初の要素から最後の要素までを範囲として指定した場合もリストからすべての要素を削除することができます。スライスを使ってリストの全ての要素を指定するには、開始インデックと終了インデックスをどちらも省略して次のように行います。, リストからすべての要素を削除することができました。, 作成済みのリストから指定した位置にある要素を削除したり、指定した値と同じ値を持つ要素を削除する方法について解説しました。, 初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。. そうでなければ無理して使う必要はないかなと思います。, また、リスト内包表記で for 文の代替はできません。 それは Python のリストが、一般にコンピュータサイエンスで while 文ではなく for 文でやろうとすると、少し沼にハマります。 もっと便利そうです。, 簡潔で読みやすいです。また、実行速度も速いです。 前半のコードは読み飛ばしていただいて、 Let'sプログラミング ©2006-2020 Buzzword Inc.. All Rights Reserved. もしメモリが気にならないなら、この方法がオススメです。, ただ、実際には new_lst という新しいリストを作るというズルをしています。 言われる「リスト」というよりも C 言語の「配列」に近いものだからです。, 以下の記事で説明させて位いただきました。 >> ['Orange', 'Lemon', 'Grapes', 'Apple'], >> ['Orange', 'Lemon', 'Peach', 'Grapes'], スライス機能を使って要素を削除する, インデックスで指定した要素を削除する, 指定した値と同じ値を持つ要素を削除する, リストからすべての要素を削除する. 奇数の要素を削除してください。, (補足)  絶対にオススメしません  © 2020 Pyhoo(パイフー) All rights reserved. ご説明させていただいております。, なぜ、このコードが間違いかと言うと del e が、変数 e を削除しているだけだからです。 #1. プログラミング言語(Pythonなど)を働きながら独学で習得。「Excel作業の自動化」「人工知能による予測」「Webアプリ開発」「Webスクレイピング」を駆使した業務ハック(業務改善×システム化)が得意なサラリーマンです。, リストとは、情報を入れておくための箱(変数)のことで、複数の箱を管理するためのものです。, 簡単にいうと、たくさん情報(文字列や数値など)をまとめて管理できるとても便利な機能です。それぞれの箱に入った情報のことを”要素”と言います。, また、”要素”には順序がありそれぞれ番号が付いています。この番号のことを”インデックス”と言います。, ”インデックス”は0番から始まり、この番号を指定することで”要素”を取り出すことができます。, リストを新しく作ったり要素を追加・変更するためには、テクニック(関数・メソッド)を使う必要があります。でも、そのテクニックを覚える必要は全くありません。辞書のように必要な時に調べてコピペすればOKです。, よく利用するリストの作成方法をまとめました。No.1からNo.3まで順番に説明します。, popメソッドでインデックス番号を指定すると、削除したデータを返してくれます。リスト(x)を出力すると、削除されていることが分かります。, removeメソッドを使うと、指定した要素に対し、リスト内で最初に一致した要素を削除できます(一致する要素がリストに2つある場合、最初のデータしか削除されません)。, また、「removeメソッド」を使うとリストの中で一致する最初のデータを削除できます。よく使われるテクニックなので、ぜひマスターしてください。, 大学病院で教育に関わる仕事をしています。教職員一人ひとりに合った教育を提案できる仕組みをつくるため、人工知能(AI)のプログラミングが可能なPythonをはじめました。文系・ノンプログラマー向けにPythonの基本を分かりやすく解説します。, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。. 上で見たように新しいリストに要素を条件で分類しつつ追加する方法と(1, 2)、 これがもっとも簡単です。 元からあるリストから要素を削除する方法です(3, 4)。, for 文で書くときは、すこし工夫が必要です。 体的には次のように記述します。, 次のサンプルを見てください。, del 文を使ってリストの要素を削除することができました。, リストではスライス機能の開始インデックスと終了インデックスを指定してリストの指定した範囲の要素を別の要素と入れ替えることができますが、入れ替える要素として空の要素を指定すると指定した範囲の要素を削除することができます。, リスト[開始インデックス:終了インデックス] = [], スライスを使って指定した範囲の要素を削除します。, スライス機能を使ってリストの最後に別のリストの要素を追加することができました。, リストからインデックスで指定した要素を削除する方法です。リスト型で利用可能な pop メソッドを使用します。, リスト.pop() while 文になります。for 文で書くと「書き方」でも「速度」でもハマります(後述します)。, ただ、思いの外、メモリが気になるから、 もし、どうしても新しいリスト new_lst を作るのでなく、 その分だけメモリを消費してしまいます。, ジェネレータ式 を使うことで回避することができます。 後半の図入りのところだけ、サクッと眺めていただければ、 こういう専用の簡単な書き方のことを一般に 糖衣構文 と言います。, リスト内包表記は、なんだか便利そうですね。もしこれで必要な要素だけ取り出せたら、 前から削除すると順番がずれるので reversed を使って、後ろから削除します。, 削除する値を使いたいなら pop を使います。  Pythonのループ内でリストの要素をそのままremoveすると要素が1つ飛ばしで処理されちゃう話 はじめに こんにちは、サーバーレス開発部の岡です。 普段Pythonを使っている人であれば当たり前の仕様かもしれませんが、Pythonでリストの要素をループ内で削除するときは少し工夫が必要です。 コードも綺麗になるので。, そんな よく ある書き方なので「リスト内包表記」という書き方が用意されています。 無理せず簡単な方を使うのを個人的にオススメしたいなと思ったり、思わなかったりします。 リストから直接要素を削除しようという重たい状況って無いのかなと思ったりします。 。 雰囲気だけ伝わるかなと思います。. 可読性、実行速度、なぜ速度が違うのかと言った、かなり細かいことは後編に書きました。, メモリを消費します。よくみるとリスト内包表記は新しいリスト new_lst を1つ作ってしまっています。 最初の「list.pop()」で、リスト内の末尾の要素である”yellow”が削除されています。次の、「list.pop(1)」で、インデックス番号1番の”orange”が削除されています。 pop()メソッドの便利なところは、削除した要素を、別の変数に代入して保存することができるという点にあります。  削除する値を使わないなら del を使います。, 例えば while 文の例では削除した要素を再利用しているので pop を使いました。for 文の例では削除した要素を再利用しないので del を使いました。, del には、オブジェクトを削除すると言うよりも、名前を削除すると言う意味合いが強いです。名前とは変数名 val, 属性名 obj.attr , 添字表記 seq[0] が該当します。, del 文と pop メソッドを使ったので、おさらいがてらに説明させていただきました。, では、なぜ for 文を使うと悲劇的に遅くなるのでしょうか?