Pythonにおけるリストについて【初心者向け解説記事】
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
リストとは?
Pythonにおけるリストとは、複数の値を順序付けて一つにまとめたものを指します。Pythonにおけるリストは数値、文字列、ブール値、さらには他のリストまで、様々なデータを1つのリストに混在させることが可能です。リストは、これらの値を順序付けて管理するため、インデックス(番号)を指定することで特定の要素にアクセスしたり、要素の追加、削除、変更などの操作が可能です。これらの特性から、リストはPythonプログラミングで頻繁に使われる重要なデータ構造の一つとなっています。
リストの作成
Pythonにおけるリストは角括弧([])を使って定義し、その中に任意のデータ型の値をカンマ(,)で区切って格納することができます。前述の通り、様々なデータを1つのリストに混在させることが可能です。
例えば、以下のように定義することができます。
# 数値のリスト
numbers = [1, 2, 3, 4, 5]
# 文字列のリスト
name = ['鈴木', '田中', '佐藤']
# 異なるデータ型が混在したリスト
user_data = [1995, 5, 20, '鈴木', '東京', True]
また、list()関数を用いて他のデータ型(例えば文字列やタプル)からリストを作成することも可能です。
# 文字列からリストを作成
char_list = list("hello") # ['h', 'e', 'l', 'l', 'o']
# タプルからリストを作成
tuple_list = list((1, 2, 3)) # [1, 2, 3]
リストの要素へのアクセス
Pythonのリストでは、各要素へのアクセスはインデックス(0から始まる整数)を用いて行います。インデックスを使ってリストの任意の要素を取得したり、要素を新しい値に更新することができます。
リストの最初の要素はインデックス0、2番目の要素はインデックス1となります。以下に例を示します。
names = ['鈴木', '田中', '佐藤']
# 最後の要素を取得
print(names[0]) # 鈴木
# 3番目の要素を取得
print(names[2]) # 佐藤
また、Pythonでは負のインデックスを使ってリストの後ろから要素にアクセスすることも可能です。最後の要素はインデックス-1、最後から2番目の要素はインデックス-2となります。
names = ['鈴木', '田中', '佐藤']
# 最後の要素を取得
print(names[-1]) # 佐藤
# 最後から2番目の要素を取得
print(names[-2]) # 田中
このようにインデックスを用いて、リストの要素へのアクセスが容易に行えます。ただし、存在しないインデックスを指定するとエラー(IndexError)が発生しますので注意してください。
リストの操作
リストの操作にはいくつかの種類があります。リストに新しい要素を追加したり、既存の要素を変更したり、要素を削除したり、並び替えたりすることができます。
要素の追加
appendメソッド
appendメソッドは、新しい要素をリストの最後に追加することができます。
branches = ['東京', '大阪', '名古屋']
branches.append('福岡')
print(branches) # ['東京', '大阪', '名古屋', '福岡']
extendメソッド
extendメソッドは、一つのリストや文字列のような要素を一つずつ順に取り出すことができるオブジェクトの全ての要素を別のリストの末尾に追加します。
branches = ['東京', '大阪', '名古屋']
branches.extend(['福岡', '札幌', '広島'])
print(branches) # ['東京', '大阪', '名古屋', '福岡', '札幌', '広島']
また、加算演算子(+)を使って2つのリストを連結し、新しい要素を追加することも可能です。
branches = ['東京', '大阪', '名古屋'] + ['福岡', '札幌']
print(branches) # ['東京', '大阪', '名古屋', '福岡', '札幌']
insertメソッド
insertメソッドを使えば、指定した位置に新しい要素を挿入することも可能です。
branches = ['東京', '大阪', '名古屋']
branches.insert(1, '仙台')
print(branches) # ['東京', '仙台', '大阪', '名古屋']
要素の変更
リストの既存の要素を変更するには、その要素のインデックスを使って新しい値を代入します。
branches = ['東京', '大阪', '名古屋']
branches[1] = '神戸'
print(branches) # ['東京', '神戸', '名古屋']
要素の削除
リストから要素を削除する方法にはいくつかの種類があります。
delステートメント
delステートメントを使う方法です。
branches = ['東京', '大阪', '名古屋']
del branches[2]
print(branches) # ['東京', '大阪']
removeメソッド
removeメソッドを使って特定の値を持つ要素を削除することも可能です。
branches = ['東京', '大阪', '名古屋']
branches.remove('東京')
print(branches) # ['大阪', '名古屋']
popメソッド
popメソッドは、指定したインデックスの要素をリストから削除し、その要素を返します。インデックスを指定しない場合は、最後の要素を削除して返します。
branches = ['東京', '大阪', '名古屋']
print(branches.pop(2)) # 名古屋
print(branches) # ['東京', '大阪']
clearメソッド
clearメソッドは、リスト全ての要素をクリアして、空のリストにします。
branches = ['東京', '大阪', '名古屋']
branches.clear()
print(branches) # []
リストの検索
indexメソッド
indexメソッドは、引数に指定した値がリストのどの位置(インデックス)に存在するかを返します。リスト内に同じ値が複数存在する場合は、最初の要素の位置を返します。
例えば、以下のように使います。
colors = ['red', 'green', 'blue', 'yellow', 'green', 'blue']
index_green = colors.index('green')
print(index_green) # 1が出力される
'green'はリストの5番目にもありますが、一番最初に登場するインデックスの値1を返します。
countメソッド
countメソッドは、引数に指定した値がリスト内に何個存在するかを返します。存在しない場合は0を返します。
上記のcolorsリストで'blue'の個数を調べるには、以下のように書きます。
count_blue = colors.count('blue')
print(count_blue) # 2が出力される
リストの並び替え
sortメソッド
sortメソッドは、リストの要素を順序付けします。デフォルトでは昇順(小さいものから大きいもの)に並べ替えますが、引数にreverse=Trueを指定することで降順(大きいものから小さいもの)に並べ替えることもできます。
countries = ['Brazil', 'America', 'China']
countries.sort()
print(countries) # ['America', 'Brazil', 'China']
# 逆順に出力
numbers = [7, 1, 5, 2]
numbers.sort(reverse=True)
print(numbers) # [7, 5, 2, 1]
reverseメソッド
reverseメソッドは、リストの要素の順序を逆にします。
countries = ['America', 'Brazil', 'China']
countries.reverse()
print(countries) # ['China', 'Brazil', 'America']
リストのスライス機能
Pythonのリストには「スライス(slice)」という機能があります。スライスを使用すると、リストから部分的に要素を取り出すことが可能です。基本的な形式は「リスト[開始:終了:ステップ]」です。
・開始:取り出す範囲の開始位置。省略可能で、省略した場合は最初から(インデックス0から)となります。
・終了:取り出す範囲の終了位置。この位置は含まれません。省略可能で、省略した場合は最後までとなります。
・ステップ:取り出す間隔。省略可能で、省略した場合は1となります。
例えば、次のようなリストがあるとします。
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
インデックス2から5までの要素を取り出したい場合は以下のようにします。
slice1 = numbers[2:6]
print(slice1) # [2, 3, 4, 5]が出力される
このとき、インデックス6の要素は範囲に含まれませんので注意してください。
また、ステップを用いると以下のようになります。ステップにマイナスの値を指定すると、末尾から逆順で要素を取り出します。
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
steps = numbers[::2]
print(steps) # [0, 2, 4, 6, 8]
reverse = numbers[::-1]
print(reverse) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
リストとforループ
リストとforループを組み合わせることで、リストの各要素を一つずつ取り出して何らかの処理をすることが出来ます。
countries = ['America', 'Brazil', 'China']
for country in countries:
print(country)
# 出力結果
'''
America
Brazil
China
'''
他にもいろいろな活用法やメソッドがありますが、これについては別記事で扱います。
まとめ
Pythonのリストは非常に便利で強力なデータ構造であり、データの格納や操作に頻繁に使用されます。リストの作成からアクセス、操作まで、そして便利なメソッドやスライス機能について紹介しました。これらの基本的な操作と概念を理解することで、Pythonでのプログラミングがより容易になります。
次のステップとして、他のデータ構造やPythonの高度な概念について学ぶことをお勧めします。一歩ずつPythonの世界を探求していきましょう!
【著者】
フォワードソフト株式会社のエンジニア。Java、Python、JavaScript、C#などの言語の他、クラウドやネットワーク技術を勉強しています。PythonやVBAを使った自動化で楽をする方法を考えるのが好きです。 最近はジェネレーティブAIの業務利用に関する検証を行っています。 資格を通じて知識を吸収することを心がけており、セキュリティスペシャリスト、データベーススペシャリスト、応用情報技術者、Oracle Certified Java Programmer Gold SE 11、Pythin3 エンジニア認定試験、HTML5プロフェッショナル認定試験レベル2、AWSプラクティショナーなどの情報資格を保有しています。
正社員/フリーランスの方でこのようなお悩みありませんか?
- 自分に合う案件を定期的に紹介してもらいたい
- 週2、リモートワークなど自由な働き方をしてみたい
- 面倒な案件探し・契約周りは任せて仕事に集中したい
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート