Python Python 入門 プログラミング

【python 入門】配列(list、tuple)をマスターする!

python 基礎 配列

変数では、1つの値を使うことができます。

では、複数のデータは?

そのときは、配列を使います。

頻繁に使うので、しっかり使い方をマスターしていきましょう!

 

本記事はこんな方におすすめです。

hituji
python学習し始めで、配列の使い方を知りたい

python特有の使い方をマスターしたい

 

本記事の内容
*記事長いので、>>マークで見たいところまでとんで下さい

    • 配列について知る >>
    • データを取り出す >>
    • list, tupleの相互変換 >>
    • 配列に入るもの >>
    • 追加、結合する >>
    • 削除、初期化をする >>
    • 2次元配列を作る >>
    • 並び替えをする >>
    • 検索する >>
    • 計算する >>

 

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同士の結合

>> pythonドキュメント

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

 

以上になります。

長くなりましたが、全部読んでいただいた方はお疲れ様です。

これらが基本的によく使う方法ですので、なんとなくでも覚えておきましょう。

-Python, Python 入門, プログラミング