【Python入門】リストの追加方法をマスターしよう



【Python入門】リストの追加方法をマスターしよう

Python の基礎学習を終えてからも 機械学習や Django などでコードを読んだり書いたりする時、「あれっ、リストの追加ってどうだっけ??」という場面あると思います。
今回は、Python のリスト追加方法についてまとめてみました。

目次
  1. 【Python入門】リストの追加方法をマスターしよう
  2. Pythonのリスト追加方法【基本編】
  3. Pythonのリスト追加方法【応用編 フォントリスト】
  4. Pythonのリスト追加方法【応用編 機械学習に】
  5. まとめ

【Python入門】リストの追加方法をマスターしよう

Pythonのリスト追加方法【基本編】

image

Python でリストを扱う時、2つの方法(関数)で要素を追加することができます。

append()関数

testList = [0, 1, 2, 3]
testList.append(100)
testList

image

append() 関数を使うと、リストの末尾にデータを追加することが可能。

insert()関数

testList = [0, 1, 2, 3]
testList.insert(1, 99)
testList

image

insert() 関数を使うと、特定の位置にデータを追加することが可能。insert() のカッコ内最初の数字(引数)で位置を指定、後の数字で値を指定しますね。

関数を応用

def some_number(x):
    x.append(77)

testList = [0, 1, 2, 3]
some_number(testList)
print(testList)

image

こちらは append()関数を def 内に納めた事例。GitHubなどで参考にするサンプルコードで時々登場してくる書き方なので、参考までに知っておきましょう。

しかし、このような append()insert() は基本操作であって、ちょっと実用的ではありませんよね。次に実際に役立ちそうな Python のリスト追加方法をご紹介していきます。

Pythonのリスト追加方法【応用編 フォントリスト】

著書「退屈なことはPythonにやらせよう」の 17章で紹介されている事例が、今回のリスト追加方法にマッチしますのでご紹介。Pythonを使って「フォント」の一覧表示を試みたいと思います。Webデザインを考える時に、タイトルのフォントリストがあると便利ですよね。

著書「退屈なことはPythonにやらせよう」参考ページ:GitHub/オライリージャパン

image

--サンプルコード--

from PIL import Image, ImageDraw, ImageFont
import os

FONT_DIR = r'/usr/share/fonts/truetype'
EXAMPLE = '大島商店\n'
FONT_SIZE = 60

fonts = []
for fname in os.listdir(FONT_DIR):
    if fname.endswith('.ttf') or fname.endswith('.ttc'):
        fonts.append(fname)

im = Image.new('RGBA', (500, len(fonts) * FONT_SIZE), 'white')
draw = ImageDraw.Draw(im)

y = 0
for font in fonts:
    draw.text((0, y), font, fill='red')
    for i in range(0, 4):
        try:
            f = ImageFont.truetype(font, FONT_SIZE, index=i)
            draw.text((200 + 200*i, y), EXAMPLE, fill='black', font=f)
        except:
            pass
    y += FONT_SIZE

im.save('fontlist.png')

--実行結果--

image

--プログラムの概要--
Pillow という画像処理ライブラリを使って、PC内のフォント毎に特定の文字を出力。リストの追加は、11行目の fonts[] という空リストに対して実行。PC内のフォント情報を習得して、 fonts[]リストに追加して出力用紙のサイズを決定。そしてフォント情報が追加された fonts[] リストをベースに、Pillow の draw.text()関数でフォントを指定して「大島商店」を出力。

試しに、最初は空だった fonts[] にどれだけの要素が追加されたかを確認してみました。

image

PC内のフォントデータが fonts[]リストに追加されていることが確認できます。 ちなみに上記コードは Ubuntu を対象としており、 Windowsの場合は上から4行目の FONT_DIR = r'/usr/share/fonts/truetype'FONT_DIR = r'C:\windows\Fonts' になります。

注意)英数字はほとんどキレイにプレビューされますが、ひらがな・漢字はうまくプレビューされないです。また Mac も試しましたが、ごめんなさい、エラー解決できませんでした。

Pythonのリスト追加方法【応用編 機械学習に】

機械学習の勉強をしていますと、時々学習済みプログラムに任意のデータをインプットして、結果を予測する機会があります。そんなとき、入力したデータを自動的に保存できたら便利ですよね。今回は Iris(アイリスというお花)の品種を識別するプログラムに、自分で測ったデータを入力して、その入力データと予測結果を CSV に残したい(リスト追加)と思います。

CSVへのデータ追加は、Python csvモジュールの Append機能を利用してみますね。

-- Iris(アイリス)イメージ画像 --
image

--サンプルコード--

import sys
import pandas as pd
import matplotlib
import numpy as np
import scipy as sp
import IPython
import sklearn
import csv

from sklearn.datasets import load_iris
iris_dataset = load_iris()

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)

sepal_length = input('sepal_length(ガクの長さ)は何cm?')
sepal_width = input('sepal_width(ガクの幅)は何cm?')
petal_length = input('petal_length(花びらの長さ)は何cm?')
petal_width = input('petal_widthは(花びらの幅)は何cm?')
X_new = np.array([[sepal_length,sepal_width,petal_length,petal_width]])

prediction = knn.predict(X_new)

print("Predicted target name: {}".format(iris_dataset['target_names'][prediction]))

y_pred = knn.predict(X_test)

print("Test set score: {:.2f}".format(knn.score(X_test, y_test)))

iris = "{}".format(iris_dataset['target_names'][prediction])
predicted_score= "{:.2f}".format(knn.score(X_test, y_test))

with open('Iris.csv', 'a') as csvFile:
    writer = csv.writer(csvFile)
    writer.writerow([sepal_length, sepal_width, petal_length, petal_width, iris, predicted_score])
csvFile.close()

--実行結果--

image

--プログラムの概要--
Pythonの機械学習ライブラリ scikit-learn にある Iris のデータセットを用いて、ガクと花びらの大きさから品種を推測。学習プログラムは、K-最近傍法。その学習済みプログラムに自分で測定した値を入力。入力値に対して Iris の品種が推測され、そのデータを CSV に記録。

小学校の理科の授業なんかに使えそうですね。

ちなみに上記コードの中でリスト追加を実行している部分は、下から 4行目の with open('Iris.csv', 'a') as csvFile:'a' です。Python の CSV モジュールは、 CSVファイルの読み込みが 'r'、書き込み(上書き)が 'w'、追記(Append)が 'a' ですね。

まとめ

リストの追加や結合は、機械学習に Django などのアプリ開発、多くの場面で登場してきます。仮にリスト機能について詳しいことは分かっていなくても、基礎ができていればコードを読んだ時に「この部分はリスト機能でここと関連しているな」と漠然とプログラムをイメージすることが可能。このことによって「わからない部分が分かる・・・」ようになってきます。すると自分でコードを読んだり試したりすることが楽しくなるというわけですね。

リスト以前に「Pythonプログラムの実行方法が分からない」「 import ●● ってなに?」という方、一度 Python の基礎学習を検討されてみてはいかがでしょうか? CodeCamp なら オンライン × マンツーマン で効率よく Python の基礎を習得できると思いますよ。

関連記事

オシママサラ
この記事を書いた人
オシママサラ
\ 無料体験開催中!/自分のペースで確実に習得!
オンライン・プログラミングレッスンNo.1のCodeCamp