- 更新日: 2018年05月29日
- 公開日: 2018年05月27日
【Python入門】リストの使い方を簡単に説明
Pythonのリスト機能。
一見すると簡単そうですが、数値計算や人工知能系プログラムで使用する「配列」「多次元配列」レベルになると複雑に。
これからPython学習を進めていった時に困らないように、リスト機能の基礎をマスターしておきたいですね。
【Python入門】Pythonのリストの使い方をマスターしよう
Pythonのリスト(list)とは
Pyhtonのリスト機能は、APIで提供されているJSONファイルを使いたい時や文字列や数値を順番に管理したい時、それから変数の内容が変わる時に使う機能です。
言葉よりもコードを書いた方が分かりやすいと思いますので、まずは基本的な形をご紹介します。
【Pythonリスト機能の基本形】
リスト機能は、 [] で囲むことで文字列や数値に リスト の意味を持たせます。
この [] を利用するリスト機能が理解できると、どんなメリットがあるか例を挙げてご紹介しますね。
Pythonリスト機能のメリット
- データの取り扱い性向上(JSON、CSVデータ等)
- ゲーム開発ができる
- for文の簡素化(リスト内包表記)
- データをミューダブルに管理できる
①【データの取り扱い性向上(JSON、CSVデータ等)】
Pythonのリスト機能を理解すると、APIやWebスクレイピングが楽しくなるかもしれません。 以下に2つの例をご紹介しますね。
<< 例1 API事例 >>
ビットコイン取引所の現在の平均値算出
下記画像内の右下 ▶ マークでコード実行できます。
APIで提供されているJSONデータ内の必要な要素を、リスト機能でピックアップすることが可能。 これで自分だけの欲しいデータを取得することができます。
<< 例2 Webスクレイピング事例 >>
オークションサイトの気になる商品のリスト作成
欲しい商品をヤフオク!やモバオクなどオークションサイトで探している方は、いちいちアプリもしくはWebを開いていつも検索するのは非効率ですよね。ターゲット商品を一瞬でリストアップしてくれれば、お目当てのものが出品されているか一目で分かります。時短に使えそうですね。 こちらはご自身のパソコン上で試してみて下さい。
import csv
import requests
from bs4 import BeautifulSoup
mobaoku_html = requests.get('https://www.mbok.jp/_l?at=all&sel-cat=900000000&c=900000000&cp1=&cp2=&ic=1&ss=1&_CODE=%82%A0&vt=0&r=fl&m=&o=&fc=&ls_exec=1&mem=1&q=%8F%C1%96h')
soup = BeautifulSoup(mobaoku_html.text, "html.parser")
with open('mobaoku.csv', 'wt') as fw:
writer = csv.writer(fw, lineterminator='\n')
writer.writerow(['name', 'price'])
for i in soup.select('div.row-single > ul > li'):
name = i.select_one('h2.title > a > span').get_text().strip()
price = ''.join(i.select_one('div.item-main-info > p > span').get_text().split())
writer.writerow([name, price])
結果
出品中の商品名と価格を、変数 name と price に代入し、for 文で商品毎の名前と価格をチェック。 各変数(nameとprice)をリスト内に代入することで、データ管理を容易にし、CSV書き込みも可能に。
ゲーム開発
リスト機能を理解するとオセロや将棋などのボードゲームを開発することができます。
例えばこちらのオセロゲームでは、ボードのマスをリスト機能で表現。 通常オセロは8×8のボードですが、リストを理解すると子供用として5×5などにアレンジすることもできますね。
参考データ:pyOthello
for文の簡素化(リスト内包表記)
「Pythonの禅」によると、
醜いより美しい方がいい。暗示するより明示する方がいい。
ということで、for文の書き方もリスト機能を使うことでシンプルに記述できます。 参考程度にこんな表現方法もあるんだな、という程度で知っておきたいですね。
上記のような記述は、「リスト内包表記」といい、ループ処理やリストの応用的な使い方に。
また初期学習段階ではあまり気にすることはないと思うのですが、for文で処理する場合とリストで処理する場合は、演算速度が異なります。基本的にはリストの方が早く、機械学習やデータマイニングなど処理時間がかかる時に考慮する必要が出てくると考えられますね。(参考記事:LeadSift)
データをミューダブルに管理できる
ミューダブルなデータ:データの値を変更できる様式。反対はイミューダブル。
通常、文字列を変更しようと思うと replaceメソッドが使われます。
例えばこんな感じ。
ひとつの変数の文字列を変更するだけであればそれほど手間ではありませんが、文字列の集合となると replace() 後に再び演算式を定義する必要があり、ちょっと手間ですね。しかし、リスト機能を使うとスマートに文字列を変更することができます。
文字列をリスト管理することでオフセット [] 機能が使えるようになります。 上記コードのように、オフセットで変更した文字列は、 replace() のように演算式を再定義することなく文字列を変更可能。 チャットボットなど文字列が頻繁に変わる場合などで有効そうですね。
それではPythonリストのメリットはこれぐらいにして、リスト機能の使い方を一通りご紹介させて頂きます。
Pythonのリスト機能一覧
こちらではPythonのリスト管理における機能をご紹介。主な機能は以下のとおりです。
- リスト要素の取り出し
- リスト要素の追加
- リスト要素の削除
- リスト要素の結合
- リスト要素の並び替え
リスト要素の取り出し
オフセット機能を使ってリスト内の要素を取り出すことが可能です。
リスト要素の追加
リスト内の要素に、新たに要素を追加する方法は2つあります。
①要素の順番に割り込んで追加する場合
既存リストの任意の場所に要素を追加したいときは、 .insert() メソッドを使います。
insert() のカッコ内の最初の数値で挿入したい順番を定義、次に挿入したい数値や文字列、変数を定義。
②要素の末尾に追加する場合
リスト内に順番に要素を追加したい時は、この方法を用います。
append() というメソッドを使いますね。
リスト要素の削除
不要なリスト要素は削除したいですよね。削除には、clear() 、 remove() 、pop() それから del の4通りがあります。
まずリスト内の要素をすべて削除できる celar() から。
次に特定の数値もしくは文字列を削除したい場合の remove() をご紹介。 remove() の使い方は、削除したい数値もしくは文字列をカッコ内に入力。
次は、リスト内の●番目の要素を削除できる pop() をご紹介します。 pop() の使い方は、削除したい要素の順番をカッコ内に入力するだけです。
実際に pop() のコードを打ち込んだ方なら、「複数の要素を消すのはどうしたらいいんだろう」と思うでしょう。 要素を複数削除する方法はいくつかあります。
■ループ処理で複数の要素を削除■
■numpyで複数の要素を削除■
リスト内の要素の削除方法はいくつかありますが、リストサイズが大きくなると削除方法によって処理速度が異なります。リストサイズが大きい場合は、 numpy を使って削除する方法がベターというテスト結果もありますね。参考:Stack Overflow
del によるリスト要素の削除は、これまでの clear() や remove() 、 pop() とは違ってメソッドではない削除方法になります。 削除したいリストを del で定義して、オフセット内に削除項目の順番を指定。
リスト要素の結合
複数のリストをひとつにまとめたい時に「要素の結合」を使います。
要素の結合は、 extend() メソッドもしくは 演算子 += で処理可能。
まずは extend() の例から。
被結合リストを extend() メソッドの前に書いて、くっつけるリストを extend() のカッコ内に記入。
次に演算子 += で結合する場合の例をご紹介しますね、
被結合リストを書いて、 くっつけたいリストを += でつなぎます。
もしくは新しく変数を設定して、複数のリストを結合することも可能。
リスト要素の並び替え
複数要素があると、やっぱり並び替えたくなりますよね。リストの要素を並び替えるには、sort() メソッドを活用。
数字やひらがなは順番通りになりますが、漢字の順番は・・・よくわかりません。 調べてみましたところ、漢字は部首画数順に並ぶということが判明。 リストで漢数字を用いる場合は、順番通りにならないので要注意ですね。
Python初心者が押さえておきたいリストに関する操作まとめ
これまでリスト要素の編集方法をご紹介してきました。こちらでは要素の編集以外の役立つメソッドをご紹介。
- 空リストの作成
- リストのリスト
- リスト数の抽出
- リスト内の特定要素数をカウント
- リストから文字列への変換
- リスト要素の照合作業
■リストの作成■
list = [] でカラのリストを定義して、append() メソッドで要素を追加します。
■リストのリスト■
ちょっと複雑ですが、 [[ でリストの中のリストを定義できます。機械学習などのデータセットで、リストの中のリストは登場してきますね。
■リスト数の抽出■
リスト内にいくつ要素があるか確認したいときは、 len() メソッドを利用。
■リストから文字列への変換■
リスト内の要素を文字列に変換する場合は、 join() メソッドを使用。ただし、リスト内の要素が数値の場合は map() メソッドを使います。
■リスト内の特定要素数をカウント■
リスト内に同じ要素がいくつかある調べたいときは、 count() メソッドを利用しますね。
■リスト内の特定要素は何番目■
「リスト内にこの要素は何番目に含まれているかな」と順番を確かめたい時は、 index() メソッド。
■リスト内に特定要素はありますか■
「リスト内にこの要素あるかな?」という時は in を使うと検索実行できます。
\AIエンジニアに必要なスキルが身に付く/
まとめ
Pythonのリスト機能を短絡的に見ると簡単で退屈かもしれません。 しかし、数値計算や人工知能系の開発になるとリストを応用した多次元配列などが登場してきます。 その時にリストの基本ができていると、比較的スムーズに難しい問題も説いていけるのではないでしょうか? またリスト機能を使う中でループも登場してきたりしていますので、ループや条件分岐などの基礎を飛ばしている方、今一度基礎学習からはじめてみるのもわるくないかもしれませんね。
CodeCampでPython学習、検討してみませんか?
- この記事を書いた人
- オシママサラ