Python

Pythonのリストについて

By 2021年2月25日March 25th, 2021No Comments

Pythonにはデータをまとめるさまざまな配列があります。イメージとしては箱の中にそれぞれのデータが入っていて、そのデータごとに0から始まるインデックス番号が振られており、その番号で管理されています。ここでは一番基本的なlist型をみていきます。

プログラミング初心者対象!Python入門セミナー

プログラミング初心者がPythonの初歩部分を突破するためのセミナーです。

Pythonのリストとは

Pythonにはリスト以外にも、要素を後から変更できないタプル(tuple)や、1つの要素をキーと値で扱う辞書(dict)、データのグループである集合(set)があります。

リストの定義としては「,(カンマ)」で区切って、要素[ ]で囲みます。またタプルと違い、要素を後から追加したり削除したりできます。

変数名(リスト名) = [要素1,要素2,要素3]

color = ['赤','青','黄']

Pythonは複数のデータ型をひとまとめにすることが出来ます。文字列と数字、論理型などをミックスして要素に入れることも可能です。

name_list = ['田中',200,True]

プログラム上では数字と文字は別の種類のデータとして扱われるので、文字列を要素として入れるときには必ずシングルクオーテーション(’ ‘)かダブルクオーテーション(” “)で囲んで、コンピューターにこれは文字列であることを認識させないとエラーになってしまいます。

Pythonで扱うデータ型で代表的なものは以下です。

データ型概要
int整数型。1や100などの整数の数値のデータ型。
float浮動小数点型。0.1や0.345のような小数点を含んだ数値のデータ型。
str文字列型。’りんご’や”バナナ”などのシングルクオーテーション(‘ ‘)やダブルクオーテーション(” “)で囲んだ文字列のデータ型。
bool論理型。True(真)とFalse(偽)のいずれかで表されるデータ型。

<関連リンク>

Pythonのリスト内に要素を追加する方法

Pythonのリストから要素を削除する方法

文字列を結合させる方法

演算子(+,+=)を使って文字列を結合する方法

リストを使った関数

要素を末尾に追加する.append()などメソッドと関数の違いは、関数は引数を受け取り返り値(戻り値)を返すことです。関数の値によって、返り値が変わるのが関数の便利な点です。

ここではリストと組み合わせると便利なlist()関数とrange()関数をみていきます。list()関数はオブジェクトをリストに変換する関数です。range()関数を使うと数値が連続したリストを簡単に作ることができます。

range()関数はlist()関数とセットで使うことが多く、for文を合わせて使うことで、繰り返しの処理を簡単に行うことができます。

range(引数)

list(オブジェクト)

0から10までの数字のリストをrange()関数とlist()関数を使って作成してみると以下のようになります。

num_list = list(range(10))print(num_list)

実行結果

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

引数は1つだけでなく、2つ以上の引数を指定することも出来ます。開始位置とステップは省略が可能です。

range(開始位置,終了位置,ステップ)

0から10までの偶数のリストを作ると以下のようになります。

even_list = list(range(0,10,2))
print(even_list)

実行結果

[0, 2, 4, 6, 8]

ペアリスト

リストは2つの値をペアでも格納できます。その場合このように書きます。

a = [1,2],[3,4],[5,6]

もしくは

b = [(7,8),(9,10),(11,12)]

データを取り出す際はインデックス番号を指定します。

リスト名[インデックス番号]

例えばリストaの2番目の要素(3,4)を取り出す場合には

a[1]

と書きます。コンピュータは0から数えるので2番目の要素のインデックス番号を[1]と指定する点に注意してください。

実行結果

[3, 4]

リストの検索

検索したいオブジェクト in リスト名

リスト内に特定の要素がないか検索する場合は「in」演算子を使います。例えばfruits_listの中に「リンゴ」があるかどうかを検索する場合は以下のようになります。

fruits_list = ['リンゴ','なし','ブドウ','バナナ']
'リンゴ' in fruits_list

実行結果

True

この場合fruits_listの中に’リンゴ’があるので、返り値はTrueとなります。もしリストにないものを指定した場合はFalseが返されます。

またオブジェクトで検索するのではなく、インデックスメソッドを使ってインデックス番号を検索することも出来ます。この場合インデックスの番号が返り値として返されます。

リストオブジェクト.index(検索したいオブジェクト)

alpha_list = ['A','B','C','D']alpha_list.index('B')

実行結果

1

この場合’B’のインデックス番号である「1」が実行結果に表示されます。コンピューターは0からカウントするのでalpha_list.index(‘A’)と入力した場合は実行結果が「0」となります。

またPythonでは英語の大文字と小文字は違う文字として認識しますので、alpha_list.index(‘b’)と入力するとエラー(ValueError: ‘b’ is not in list)になります。これはalpha_listの要素に小文字の「b」が含まれていないためです。

リスト内包表記

リスト内包表記を使えばリスト内で、for文やifを使った条件分岐といった比較的複雑なリストの定義を、シンプルに記述できます。コードの処理速度や簡潔さを保つ意味で大きなのメリットのあるPythonらしい書き方です。

[式 for 変数 in 反復可能なオブジェクト]

例えば一般的なfor文を使って0から4までの数字をリストを作る簡単なプログラムを書いてみると以下のようになります。

int_list = []
for num in range(5):
    int_list.append(num)
print(int_list)

実行結果

[0, 1, 2, 3, 4]

内包表記を使うと以下のように、一行にまとめて記述できます。

int_list = [num for num in range(5)]

またリスト内包表記でif文を利用する場合は

[式 for 変数 in 反復可能なオブジェクト if 条件]

となります。

if文を使ってリストの数字が偶数の時だけ二乗するプログラムを内包表記で書いてみると以下のようになります。

print([num * num for num in range(5) if num % 2 == 0])

実行結果

[0, 4, 16]

range(5)で指定した0から4までの数字が偶数の時だけ(if num % 2 == 0)二乗されているのが分かると思います。

まとめ

今回はPythonのリストについてみてきましたが、単にリストといっても、さまざまな記述方法があり、リストを作成するだけでなく、関数を使えば作成したリストを使った簡単な処理まで行うことができます。

・リストは[ ] で囲んで,(カンマ)で区切ったデータの集合

・リストはあとで要素を追加したり削除したり出来る。

・関数を使うと、数値のリストやfor文を使った繰り返し処理が簡単にできる。

→list()関数、range()関数

・リスト内包表記を使うとシンプルなコードで命令を書くことが出来る。

Udemyの動画学習でもPythonを勉強しよう!

「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!

UdemyのPythonおすすめ33講座レビューリスト
HOSL

Author HOSL

More posts by HOSL