変数では、1つの値を使うことができます。
では、複数のデータは?
そのときは、配列を使います。
頻繁に使うので、しっかり使い方をマスターしていきましょう!
本記事はこんな方におすすめです。
python特有の使い方をマスターしたい
本記事の内容
*記事長いので、>>マークで見たいところまでとんで下さい
python入門 基礎まとめも参考にしてください。
目次
配列について知る
まず、配列について紹介します。
変数と配列の違い
変数と配列の違いを紹介します。
変数は1つの名前で1つのデータを持ちます。
配列は1つの名前で複数のデータを持ちます。
絵を実際のコードにすると次のようになります。
# 変数 a = 1 print('変数', a) # 配列 list_a = [1,2,3] print('配列', list_a)
変数 1 配列 [1, 2, 3]
書き方は後ほど紹介します。
配列の種類
配列は2種類あり、次のような特徴があります。
配列種類
list(リスト):データの追加や削除ができます。
tuple(タプル):データの追加や削除ができません。
後で紹介しますが、この二つは相互変換できます。
listの方が追加、削除ができるので、listメインに紹介していきます。
定義
listとtupleは次のように書きます。
配列定義
list名 = [データ1, データ2, ...]
tuple名 = (データ1, データ2, ...)
コードで書いてみます。
1,2,3のデータをそれぞれ入れます。
list_a = [1,2,3] print('list', list_a) tuple_a = (1,2,3) print('tuple', tuple_a)
list [1, 2, 3] tuple (1, 2, 3)
データを取り出す
次は、データの取り出し方を紹介します。
listもtupleも方法は同じなので、listで説明していきます。
indexについて
配列にはindexが0〜つきます。
indexはデータを取り出す時に使う番号です。
list_aに1〜5を入れたときのイメージですが、四角の箱の左下の番号です。
1つ取り出す
このindexを使ってデータを取り出します。
取り出し方は次のように、index Noを指定します。
データ取り出し方
list名[index No]
index = 1の2番目のデータを取り出してみます。
list_a = [1, 2, 3, 4, 5] print(list_a[1])
2
list_a[1]のところがデータを取り出しているところです。
複数取り出す
次に複数のデータを取り出します。
取り出し方は次のように、indexの開始Noと終了Noを指定します。
複数取り出す
list名[開始No: 終了No]
*終了Noの1つ前まで取り出します。
2番目と3番目のデータを取得します。
list_a = [1, 2, 3, 4, 5] print(list_a[1:3])
[2, 3]
list_a[1: 3]がデータ取り出しているところです。
マイナス値を使う
indexはマイナスを使うことができます。
マイナスの値は、配列の末尾からを表しています。
データが数千、何万ある場合に、末尾のデータが簡単に取れます。
参考に末尾から2番目の4を取得してみます。
list_a = [1, 2, 3, 4, 5] print(list_a[-2])
4
変数に分けて取り出す
listのデータは下記の書き方で、変数に分けて取り出すことができます。
これは結構見かけるので覚えておいてください。
変数に分けて取り出す方法
変数1, 変数2, ... = list名
*変数に取得したくないデータはアンダーバー「_」を使います。
こんな感じでまとめて、変数にしてしまいます。
全部取得する場合
list_a = [1, 2, 3] a, b, c = list_a print(a, b, c)
1 2 3
一部取得しない場合
2番目のデータをアンダーバーで取得しないようにしています。
list_a = [1, 2, 3] a, _, c = list_a print(a, c)
1 3
list,tupleの相互変換
listとtupleはそれぞれ変換することができます。
相互変換
listからtuple: tuple(list名)
tupleからlist: list(tuple名)
listからtupleに変換してみます。
list_a = [1, 2, 3, 4, 5] tuple_a = tuple(list_a) print(type(tuple_a), tuple_a)
<class 'tuple'> (1, 2, 3, 4, 5)
typeを使うことで、型の確認をしています。
tupleと出ていますね。
このように、型の変換をすることがあります。
配列に入るもの
これは配列に限らず変数でもそうですが、なんでも入ります。
数値、文字列、配列、関数、クラスなどなんでもです。
例えば、下記のように、文字列、配列、関数を入れてみます。
文字列=名前、配列=[身長, 体重]、関数=bmiの計算関数とします。
*関数:処理をまとめておく方法です。
# 関数 def bmi(data): tall = data[0]/100 weight = data[1] return weight/(tall*tall) # list tall_weight = [170, 70] # 文字列 & list & 関数 を入れる list_various = ['Aさん', tall_weight, bmi] # データ確認 print(list_various) # リストから取り出して使う print(list_various[0], list_various[2](list_various[1]))
['Aさん', [170, 70], function bmi at 0x0000023ED07C38B8] Aさん 24.221453287197235
ついでに、取り出して、bmiの計算もしていますが、上記例はわかりにくいですね。
色々データを入れることはあるので、わかりやすい範囲で行いましょう。
追加、結合する
listにデータを追加したり、他のlistを結合したりする方法を紹介します。
メソッド | 役割 |
append | データを末尾に追加 |
insert | 指定したindexに追加 |
extend 若しくは + | list同士の結合 |
append
appendはlistの末尾の箱にデータを入れます。
append使い方
list名.appned(データ)
listにlistを入れてみます。
list_a = [1, 2, 3] list_b = [4, 5] list_a.append(list_b) print(list_a)
[1, 2, 3, [4, 5]]
[1, 2, ,3, 4, 5]ではないことに気づいたでしょうか?
結合ではなく、末尾に追加したlistが入っています。
insert
appendは末尾ですが、insertはデータの入れるindexを指定できます。
insert使い方
list名.insert(index No, データ)
2番目にデータを入れます。
list_a = [1, 2, 3] list_b = [4, 5] list_a.insert(1, list_b) print(list_a)
[1, [4, 5], 2, 3]
これも、2番目の箱にlistがまると入ります。
extend
extendはlist同士の結合です。
extend使い方
list名.extend(データ)
list同士を結合します。
list_a = [1, 2, 3] list_b = [4, 5] list_a.extend(list_b) print(list_a)
[1, 2, 3, 4, 5]
結合されてますね。
これは「+」でも良いですが、メソッドではないので、list_aに入れ直します。
list_a = [1, 2, 3] list_b = [4, 5] list_a = list_a + list_b print(list_a)
[1, 2, 3, 4, 5]
削除、初期化をする
削除する方法は、以下の3つがあります。
メソッド | 役割 |
clear 若しくは = [] | 初期化 |
pop | データを取り出す(結果、1つ削除される) |
remove | 指定したデータを削除する |
初期化
listを空にして初期化します。
clear使い方
list名.clear()
# 削除前 list_a = [1, 2, 3, 4, 5] print(list_a) # 削除後 list_a.clear() print(list_a)
[1, 2, 3, 4, 5] []
これは、=[]で空のlistを入れるのもOKです。
list_a = []
こちらの方がよくみます。
pop
popはlistの末尾からデータを取り出します。
取り出し = データの取得と削除 です。
pop使い方
変数名 = list名.pop()
*変数に取り出したデータを入れます。
2回ほど取り出しながら、listの中身を確認します。
list_a = [1, 2, 3, 4, 5] print(list_a) # 1つ取り出す a = list_a.pop() print(a, list_a) # また、1つ取り出す a = list_a.pop() print(a, list_a)
[1, 2, 3, 4, 5] 5 [1, 2, 3, 4] 4 [1, 2, 3]
末尾から取り出されていることがわかります。
remove
removeは指定したデータを削除します。
indexではなく、データを指定します。
remove使い方
list名.remove(データ)
2のデータを削除してみます。
list_a = [1, 2, 3, 4, 5] print(list_a) # 2を削除 list_a.remove(2) print(list_a)
[1, 2, 3, 4, 5] [1, 3, 4, 5]
散々indexだったのに、データで指定なのでわかりにくい!
文字列も練習。
aを削除します。
list_a = ['a', 'b', 'c'] print(list_a) # a削除 list_a.remove('a') print(list_a)
['a', 'b', 'c'] ['b', 'c']
2次元配列を作る
2次元に限らず多次元を作ることができます。
わかりにくいので、2次元を説明します。
単純にリストにリストを入れます。
イメージ的には、次のようになります。
これを踏まえて、コードで見ていきましょう。
上記図と同じ2次元配列を作って、一部データを取り出しています。
# 2次元目のデータ list_1_1 = [1,2] list_1_2 = [3,4] list_1_3 = [5,6] list_a = [list_1_1, list_1_2, list_1_3] print(list_a) # 1次元目の2つ目を取得 print(list_a[1])
[[1, 2], [3, 4], [5, 6]] [3, 4]
これは以下のような書き方でも良いです。
# 2次元目のデータ list_a = [[1, 2], [3, 4], [5, 6]] print(list_a) # 1次元目の2つ目を取得 print(list_a[1])
並び替えをする
listのデータの並べ替えを紹介します。
sortの使い方
list名.sort(reverse=True/False)
*Trueが降順、Falseが昇順
list_a = [3, 4, 5, 1, 2] # 昇順 list_a.sort(reverse=True) print(list_a) # 降順 list_a.sort(reverse=False) print(list_a)
[5, 4, 3, 2, 1] [1, 2, 3, 4, 5]
昇順、降順できていますね。これは文字列でもできます。
検索する
listに入っているデータの検索方法を紹介します。
データの有無確認
listに対象のデータがあるか確認する方法です。
inを使います。
inの使い方
検索データ in リスト名
*True:データ含む False:データ含まない
数値と文字列でそれぞれの判定確認します。
# 数値 list_a = [1, 2, 3] print('1含む?', 1 in list_a) print('10含む?', 10 in list_a) # 文字列 list_a = ['a', 'b', 'c'] print('a含む?', 'a' in list_a) print('d含む?', 'd' in list_a)
1含む? True 10含む? False a含む? True d含む? False
これはif文の条件で使います。
list_a = ['a', 'b', 'c'] if 'a' in list_a: print('aを含む') else: print('aを含まない')
aを含む
データの位置確認
検索したいデータがlistのどこに含まれるか確認したい場合は、indexを使います。
indexの使い方
変数名 = リスト名.index(検索データ)
*変数名にはデータがある場合、indexが取得できます。
文字列で試してみます。
list_a = ['a', 'b', 'c'] # データ含む ind = list_a.index('b') print('bの場所', ind) # データ含まない >> エラー ind = list_a.index('d')
bの場所 1
データ含まないものでindexを動かすとエラーになります。
inでデータがあることを確認してから、場所を確認すると良いです。
計算する
listのデータの計算は次ようにできます。
メソッド | 計算 |
sum | 合計 |
max | 最大値 |
min | 最小値 |
statistics.median | 中央値 |
statistics.mean | 平均値 |
statistics.stdev | 標本標準偏差 |
まとめてみていきます。
import statistics list_a = [1,2,3,4,5] print('合計', sum(list_a)) print('最大', max(list_a)) print('最小', min(list_a)) print('中央', statistics.median(list_a)) print('平均', statistics.mean(list_a)) print('標本標準偏差', statistics.stdev(list_a))
合計 15 最大 5 最小 1 中央 3 平均 3 標本標準偏差 1.5811388300841898
以上になります。
長くなりましたが、全部読んでいただいた方はお疲れ様です。
これらが基本的によく使う方法ですので、なんとなくでも覚えておきましょう。