かゆい所に手が届く解説

Python初心者のためのリストの基礎と実用例3問

【初心者向け】Pythonのリストの基礎と実用例3問

Pythonのリストは、複数の要素をまとめて管理するためのデータ構造です。

リストは可変(ミュータブル=変更可能)であり、同じリストに対して要素の追加、削除、変更などが可能です。

頻繁に使うデータ構造である上、さまざまな使い方ができるので重宝します。

この記事では、Pythonのリストについて初心者向けに詳しく解説します。

Pythonにおけるリストの基礎

リストの定義

Pythonのリストは、角括弧( [ ] )で要素を囲んで表します。

次のように要素を列挙し、角括弧で囲みます。

# 空のリストの作成
empty_list = []

# 整数値を要素に持つリストの作成
int_list = 

# 文字列を要素に持つリストの作成
str_list = ['apple', 'orange', 'banana']

# 異なる型の要素を持つリストの作成
mix_list = ['apple', 123, 3.14, True]

リストの要素へのアクセス

定義したリストの要素へは、インデックスを使ってアクセスします。

その際、リストのインデックスは0から始まるという決まりを覚えておきましょう。

# リストの要素へのアクセス
fruits = ['apple', 'orange', 'banana']
print(fruits[0]) # apple
print(fruits) # orange
print(fruits) # banana

このように、リストの要素にアクセスする際にインデックスがリストの範囲外の場合、IndexErrorが発生します。

# リストの範囲外にアクセスすると、IndexErrorが発生する
fruits = ['apple', 'orange', 'banana']
print(fruits) # IndexError: list index out of range

リストの要素の変更

定義済みリストの要素は、インデックスを使って変更することができます。

# リストの要素の変更
fruits = ['apple', 'orange', 'banana']
fruits = 'grape'
print(fruits) # ['apple', 'grape', 'banana']

このように、リストの要素は0から始まるインデックスで管理されます。

リストに要素を追加する

定義済みリストに要素を追加するには、append() メソッドを使います。

# リストに要素を追加する
fruits = ['apple', 'orange', 'banana']
fruits.append('grape')
print(fruits) # ['apple', 'orange', 'banana', 'grape']

このように、appendメソッドを使うと簡単にリストに要素を追加することができます。

リストから要素を削除する

リストから要素を削除するには、remove() メソッドを使います。

# リストから要素を削除する
fruits = ['apple', 'orange', 'banana']
fruits.remove('orange')
print(fruits) # ['apple', 'banana']

また、pop() メソッドを使うと、リストの最後の要素が削除されます。

# リストから要素を削除する
fruits = ['apple', 'orange', 'banana']
fruits.pop()
print(fruits) # ['apple', 'orange']

pop() メソッドに引数を指定すると、指定した位置の要素を削除して返します。

# 指定した位置の要素を削除する
fruits = ['apple', 'orange', 'banana']
removed_fruit = fruits.pop(1)
print(fruits) # ['apple', 'banana']
print(removed_fruit) # orange

removeメソッドもpopメソッドもリスト内の要素を削除することができますが、それぞれ特徴があるので上手く使い分けると良いです。

リストの要素をソートする

リストの要素をソートするには、sort() メソッドを使います。

# リストの要素をソートする
numbers = 
numbers.sort()
print(numbers) # 

また、reverse=True を引数に指定すると、降順にソートします。

# リストの要素を降順にソートする
numbers = 
numbers.sort(reverse=True)
print(numbers) # [5, 4, 3, 2, 1]

リストの要素数を取得する

定義されたリストの要素数を取得するには、len() 関数を使います。

# リストの要素数を取得する
fruits = ['apple', 'orange', 'banana']
print(len(fruits)) # 3

このような組み合わせ方は頻繁に使います。

for文でrange関数の引数に入れて「繰り返しの回数」を指定する方法などはよく使われます。

リストをスライスする

定義されたリストをスライスするには、スライス表記を使います。

# リストをスライスする
numbers = 
print(numbers) # 

スライスについては、こちらの記事で詳しく解説しています。

リストを結合する

定義済みのリストを結合するには、+演算子を使います。

# リストを結合する
fruits1 = ['apple', 'orange']
fruits2 = ['banana', 'grape']
all_fruits = fruits1 + fruits2
print(all_fruits) # ['apple', 'orange', 'banana', 'grape']

このように、リスト同士の結合は簡単にできます。

リスト内包表記

リスト内包表記を使うと、簡潔にリストを生成することができます。

# リスト内包表記
numbers = [i**2 for i in range(1, 6)]
print(numbers) # 

以上が、Pythonのリストの基本的な使い方です。

プログラム例

次に、リストを使ったプログラムの例を示します。

1.リストの要素を取り出し、それぞれに 2 を掛けた結果を出力する

まずは、for文を使ってリスト内から要素を取り出す基本的な処理を紹介します。

numbers = 

# リストの要素を取り出して処理する
for number in numbers:
    result = number * 2
    print(result)

このとき、numberという変数名に決まりはありません。

2.リストに含まれる文字列を検索する

次の例は、if文を使って一致する値を探す方法です。

fruits = ['apple', 'orange', 'banana']

# リストに含まれる文字列を検索する
search_word = 'orange'
if search_word in fruits:
    print(search_word + 'が見つかりました!')
else:
    print(search_word + 'は見つかりませんでした')

for文と同じように、in演算子を使うことで条件に指定することができます。

3.リストから重複した要素を削除する

今回の記事の主題であるリストとは少し離れてしまいますが、pythonのデータ構造である「集合」を使って重複データを削除し、再度リストにするやり方です。

リストに含める要素は、重複しても「別々の要素」として扱われます。

numbers = 

# リストから重複した要素を削除する
numbers = list(set(numbers))
print(numbers)

一方、集合(set)は要素の重複を認めないため、リストを一度集合に変換し、それを再度リストに変換することで「重複データを削除する」という処理を実現しています。

以上が、Pythonのリストの使い方と、リストを使ったプログラムの例です。

リストを使ったプログラムの実用例

さらにリストについての理解を深めるため、実用例をご紹介します。

1.TODOリストアプリ

TODOリストアプリは、リストを使って実装することができます。

以下は、シンプルなTODOリストアプリの例です。

ユーザーが入力したタスクをリストに追加し、リストに含まれるタスクを表示することができます。

tasks = []

# タスクを追加する関数
def add_task(task):
    tasks.append(task)
    print('タスクを追加しました')

# タスクを表示する関数
def show_tasks():
    if len(tasks) == 0:
        print('現在、タスクはありません')
    else:
        print('現在のタスク:')
        for task in tasks:
            print(task)

# メニューを表示する関数
def show_menu():
    print('TODOリストアプリ')
    print('1. タスクを追加する')
    print('2. タスクを表示する')
    print('3. アプリを終了する')

# メインループ
while True:
    show_menu()
    choice = input('選択してください:')
    if choice == '1':
        task = input('タスクを入力してください:')
        add_task(task)
    elif choice == '2':
        show_tasks()
    elif choice == '3':
        break
    else:
        print('無効な選択です')

タスクを追加すると、その内容がリストに追加されます。

追加されたタスクは、呼び出す(表示する)ことができます。

非常に簡単ですが、リストの使い方が理解できる実例です。

2.統計情報を計算する

リストは、統計情報を計算するためにも使われます。

以下は、数値のリストから平均値、中央値、最大値、最小値を計算するプログラムの例です。

numbers = 

# 平均値を計算する
average = sum(numbers) / len(numbers)
print('平均値:', average)

# 中央値を計算する
sorted_numbers = sorted(numbers)
mid = len(sorted_numbers) // 2
if len(sorted_numbers) % 2 == 0:
    median = (sorted_numbers[mid - 1] + sorted_numbers[mid]) / 2
else:
    median = sorted_numbers[mid]
print('中央値:', median)

# 最大値を計算する
max_value = max(numbers)
print('最大値:', max_value)

# 最小値を計算する
min_value = min(numbers)
print('最小値:', min_value)

このように、リストを使うことで計算しやすくなります。

なお、上記の計算は行列が複雑になるとリストでは処理が遅くなるため、状況に応じてnumpyというライブラリが使われます。

詳しくはこちらの記事を参照してください。

3.ランダムなパスワードを生成する

リストを使うことで、ランダムなパスワードを生成することもできます。

ランダムな文字列を生成するために、Pythonのrandomモジュールとリストを組み合わせます。

以下は、数字とアルファベットからなるランダムなパスワードを生成するプログラムの例です。

import random
import string

# パスワードを生成する関数
def generate_password(length):
    # 数字とアルファベットを含む文字列を作成する
    characters = string.digits + string.ascii_letters
    # ランダムな文字列を生成する
    password = ''.join(random.choices(characters, k=length))
    return password

# パスワードを生成して表示する
password = generate_password(10)
print('パスワード:', password)

上記のプログラムでは、string.digitsstring.ascii_lettersを結合して、数字とアルファベットからなる文字列charactersを作成します。

そして、random.choices()を使って、charactersからランダムに文字を選択して、長さlengthのランダムな文字列を生成します。

最後に、生成されたパスワードを表示します。

まとめ

いかがだったでしょうか。

プログラミングを学ぶ上で、リストを使ったプログラムを実装することは、非常に重要なステップです。

リストと組み合わせて使うfor文について、こちらの記事も合わせてご覧ください。

それでは、ステキなPythonライフを!

Pythonについて詳しく知りたいという方は、こちらの書籍もおススメです。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 最近ではPythonを用いたアプリ開発、ウェブアプリケーションの開発と運営に没頭。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です