Pythonプログラミングを学ぶ上で、配列は避けて通れない重要な概念です。特に初心者の方々にとって、配列の基本的な理解はコーディングスキルを向上させるために不可欠です。
このブログでは、配列が何であるか、なぜそれが重要なのかを簡単に説明いたします。
1. はじめに
1-1. 配列とは何か
配列とは、複数のデータを一つの変数で管理するためのデータ構造です。
例えば、あなたが買い物リストを作る場面を想像してみてください。
リストには「牛乳」「卵」「パン」といった複数のアイテムがありますが、これを一つ一つの変数で管理するのは非効率的です。
ここで配列が役立ちます。
配列を使用すると、一つの変数で複数のアイテムをまとめて管理することができます。
そのほか、配列はデータの整理整頓、検索、ソートなど、多くの場面で非常に役立ちます。
例えば、社員の給与データを管理する際、配列を使えば一つの変数で全員の給与を管理できます。
さらに、配列のソート機能を用いれば、給与の高い順や低い順に簡単に並べ替えることができます。
このブログでは、配列の基本から応用まで、初心者の方が理解しやすいよう、段階を踏んで解説いたします。
2. Python配列の基本
2-1. 配列の定義
配列とは、同じ型の複数のデータを一つの変数で管理するデータ構造です。
Pythonでは、通常「リスト」と呼ばれるデータ構造がこの役割を果たします。
配列は、各データにインデックス(番号)が付与され、このインデックスを使ってデータにアクセスします。
# 配列の例
my_array = [1, 2, 3, 4, 5]
上の例は、my_array
という任意の名前をつけた変数(箱のようなもの)に、[1, 2, 3, 4, 5]
という形で5つの数字をまとめて入れています。
このようにして、一つの変数で複数のデータを管理できるのが、配列の利点です。
また、この変数、my_array
(変数名は任意)を使えば、5つの数字に一度にアクセスしたり、操作したりすることができます。
2-2. Python配列とリストの違い
初心者の方がよく混乱する点の一つが、Pythonにおける「配列」と「リスト」の違いです。
Pythonの標準ライブラリでは、一般的な配列に相当するデータ構造としてリストが用いられます。
しかし、数値計算を高速に行うためのnumpy
ライブラリでは、より効率的な「配列」が提供されています。
- リスト
標準ライブラリで提供、異なるデータ型を格納可能 - 配列
numpy
で提供、同じデータ型しか格納できないが「高速」
2-3. 配列の作成方法
Pythonで配列を作成する方法はいくつかありますが、最も基本的なのは「リスト」を用いる方法です。リストはPythonの標準機能で、非常に簡単に配列を作成できます。
リストを用いた配列の作成
以下のコードは、1
、2
、3
という3つの数字を含む配列(リスト)を作成しています。
# リストを用いて配列を作成
my_list = [1, 2, 3]
先ほども説明しましたが、このコードで行っていることは、my_list
という名前の変数(考え方としては「箱」のようなもの)を作り、その中に1
、2
、3
という3つの数字を入れています。
作成手順
- =(イコール)の左側に配列の名前(任意)を書きます。
- =の右側に、
[ ]
(角括弧)を使って数字や文字を並べます。 - それぞれの数字や文字は
,
(カンマ)で区切ります。
このようにして、my_list
という名前の配列が作成され、その中に1
、2
、3
が格納されます。
3. Python配列の操作
Pythonで配列を効果的に扱うためには、基本的な操作方法をマスターすることが重要です。
このセクションでは、要素の追加と削除、配列のスライス、そして配列のソートについて、初心者向けに詳しく解説します。
3-1. 要素の追加と削除
配列に新しい要素を追加したり、不要な要素を削除する方法はいくつかあります。
要素の追加
最も基本的なのは、append
メソッドを用いて要素を追加する方法です。
# 要素の追加
my_array = [1, 2, 3]
my_array.append(4) # 4を追加
追加後: [1, 2, 3, 4]
要素の削除
要素を削除する場合は、remove
メソッドやpop
メソッドがよく用いられます。
# 要素の削除
my_array.remove(1) # 1を削除
削除後: [2, 3, 4]
3-2. 配列のスライス
配列の一部分だけを取り出す操作を「スライス」と呼びます。
# 配列のスライス
sub_array = my_array[1:3] # インデックス1から2までを取り出す
スライス後: [3, 4]
3-3. 配列のソート
配列の要素を順番に並べ替える操作を「ソート」と呼びます。
# 配列のソート
my_array.sort() # 昇順にソート
ソート後: [2, 3, 4]
4. Python配列の応用
4-1. さまざまな配列
Pythonでは、配列というデータ型を使って、複数の値をまとめて扱うことができます。
配列は、[]
で囲んで作成し、中に値をカンマで区切って入れます。
例えば、[1, 2, 3]
や["apple", "banana", "cherry"]
などが配列です。
また、配列には、以下のような特徴や操作があります。
- 配列の中の値は、0から始まるインデックスという番号で指定できます。
fruits = ["apple", "banana", "cherry"]
という配列があるとき、fruits[0]
は"apple"
を、fruits[1]
は"banana"
を、fruits[2]
は"cherry"
を表します。 - 配列の長さは、
len()
という関数で取得できます。例えば、len(fruits)
は3を返します。 - 配列に値を追加するには、
append()
というメソッドを使います。fruits.append("durian")
とすると、fruits
は["apple", "banana", "cherry", "durian"]
になります。 - 配列から値を削除するには、
remove()
というメソッドを使います。fruits.remove("banana")
とすると、fruits
は["apple", "cherry", "durian"]
になります。 - 配列の値を並び替えるには、
sort()
というメソッドを使います。fruits.sort()
とすると、fruits
はアルファベット順になります。
4-2. 多次元配列
配列の中に別の配列を入れることもできます。これを多次元配列と呼びます。
多次元配列は、行列や表などのデータ構造を表現するのに便利です。例えば、以下のような多次元配列があります。
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
この多次元配列は、3行3列の行列を表しています。
多次元配列の要素にアクセスするには、インデックスを二つ指定します。
最初のインデックスは行番号で、二番目のインデックスは列番号です。
matrix[0][0]
は1をmatrix[0][1]
は2をmatrix[0][2]
は3を
matrix = [
[1, 2, 3], # 1~3はこの部分
[4, 5, 6],
[7, 8, 9]
]
matrix[1][0]
は4をmatrix[1][1]
は5をmatrix[1][2]
は6を
matrix = [
[1, 2, 3],
[4, 5, 6], # 4~6はこの部分
[7, 8, 9]
]
matrix[2][0]
は7をmatrix[2][1]
は8をmatrix[2][2]
は9を
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9] # 7~9はこの部分
]
インデックス値は1からではなく、0からはじまる点に注意しましょう!
5. 配列とループ
5-1. 配列を用いたループ処理
配列の要素を一つずつ取り出して処理する場合に便利な構文がループです。
forやwhileのループ処理について、もう一度復習されたい方は前回のブログをご参照ください。
ループとは、繰り返し同じ処理を行うことです。Pythonでは、for文やwhile文などのループ構文があります。
for文では、以下のような書き方をします。
for 変数 in 配列:
処理
この意味は、「配列の要素を順番に変数に代入して、処理を実行する」ということです。例えば、以下のようなコードがあります。
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
このコードは、fruitsという配列の要素を順番にfruitという変数に代入して、print関数で表示するということを繰り返します。
実行すると、以下のような出力が得られます。
apple
banana
cherry
多次元配列の場合にもfor文を使うことができます。
例えば、
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for row in matrix:
for element in row:
print(element)
このコードは、
- matrixという多次元配列の要素を順番にrowという変数に代入
- rowという配列の要素を順番にelementという変数に代入
- print関数で表示するということを繰り返す
という流れで処理を行っています。
実行すると、以下のような出力が得られます。
1
2
3
4
5
6
7
8
9
出力結果は配列matrix
の各要素を順番に表示、つまり、多次元配列の、[0][0]から[2][2]の位置に置かれた数字ということになります。
ここでつまずいた方は、さっき学習した「4-1.多次元配列」を再学習しましょう!
5-2. 配列のフィルタリング
配列の中から条件に合う要素だけを取り出すことをフィルタリングと呼びます。
Pythonでは、リスト内包表記という構文を使って簡単にフィルタリングできます。
リスト内包表記では、以下のような書き方をします。
[式 for 変数 in 配列 if 条件]
この意味は、「配列を変数に代入、条件を満たす場合、結果を新しい配列に入れる」ということです。
例えば、以下のようなコードを見てみましょう。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_numbers = [n for n in numbers if n % 2 == 0]
print(even_numbers)
このコードは、numbersという配列の要素を順番にnという変数に代入して、nが偶数である場合にnを評価した結果を新しい配列even_numbersに入れるということです。実行すると、以下のような出力が得られます。
[2, 4, 6, 8]
5-3. リスト内包表記についてをさらに詳しく
上の、[n for n in numbers if n % 2 == 0]で使われている「n」とは、リスト内包表記の中で使われる変数の名前です。
リスト内包表記では、配列の要素を順番に変数に代入して、条件を満たす場合に式を評価した結果を新しい配列に入れるということをします。例えば、
[n for n in numbers if n % 2 == 0]
というリスト内包表記では、numbersという配列の要素を順番にnという変数に代入して、nが偶数である場合にnを評価した結果を新しい配列に入れるということです。
つまり、nはnumbersの要素を一時的に保持するための変数です。
nという名前は特別な意味はありません。他の名前でも構いません。
例えば、
[x for x in numbers if x % 2 == 0]
や、
[num for num in numbers if num % 2 == 0]
などでも同じ結果が得られます。
これは他の変数名でも同じですが、重要なのは、変数の名前がリスト内包表記の中で一貫して使われていることです。
【全額返金保証】おすすめプログラミングスクール
な、なんと、なんとっ! 就職したら全額返金のウズウズカレッジが熱い!
▲YouTubeで累計390万再生を超える学習動画。学習コンテンツは、YouTubeで高評価率98.2%を誇るLinuC学習動画をさらにパワーアップした内容で提供。 さらにYouTubeでは公開していないカリキュラムを専任講師の指導の元、全て受講することが可能です。 https://www.youtube.com/playlist?list=PLXXalsdlzX-InzSH2uMWkoAdd1rE9p0O-
プログラミング未経験でも就職が可能!
な、なんと、なんと、なんとっ!? 未経験でも正社員で働ける!?
未経験からITエンジニアを目指したい方の特化型就職サポート!
▼ブラック企業を徹底排除!
離職率/労働時間/社会保険の有無/雇用形態などで厳しい基準を設けています。全ての企業に訪問して基準を満たしているかを確認し、弊社から入社された方の定着率は93%以上と非常に高いです!
▲就職サポートのみならずIT学習のサポートも受けられる (※どちらも完全無料) ・UZUZで利用できる無料のYouTube動画はなんと20本(16時間分)!
https://www.youtube.com/playlist?list=PLXXalsdlzX-IuXHRLIrw9G55Hw6oiXQGS
https://www.youtube.com/playlist?list=PLXXalsdlzX-J7AUuw2zSHit5nRUZ3eDdz