15
Pythonでリストを使う方法

リストはPythonで複数のデータを格納する一般的な方法です。1つのリストを作成することで、様々な種類のデータを整理して格納できます。買い物リストのように機能します。リストに名前を付け、リストの下にアイテムを入力します。 

リストは、辞書、タプル、セットと同様に、データ保存構造の一つです。リストは可変オブジェクトであり、更新、削除、追加によってリストの内容を変更できます。リストに格納されるオブジェクトは広義の「アイテム」に分類され、各アイテムにはリスト内の位置、つまりインデックス番号が割り当てられています。リストの最初のオブジェクトのインデックス番号は0で、アイテムが増えるにつれてインデックス番号は増加していきます。

リストを作成し、リスト内のアイテムを更新・削除する方法を学びます。その後、学んだ知識を活かして、リストを携帯電話に直接送信する買い物リストアプリを作成します。

Python でリストを使用する方法を説明するために、無料で使いやすく、クロスプラットフォームの Python エディターである Thonny を使用します。 

始める前に、Thonnyをまだインストールしていない場合はインストールしてください。Thonnyのサイトにアクセスして、お使いのシステム用のリリースをダウンロードしてください。または、こちらのガイドに従ってPythonの公式リリースをインストールしてください。なお、このガイドはWindows 10と11へのインストールについて説明しています。

Pythonでリストを作成する方法

リストの最も基本的な形式では、リスト オブジェクトを作成し、その中に項目を配置します。

1.新しい空白のドキュメントに「shopping」というリストを作成し、そこに3つの買い物アイテムを保存します。リスト内のアイテムは、整数、浮動小数点数、文字列、さらには別のリストでも構いません。アイテムのないリストも作成できます。shopping = [] とすると空のリストが作成されますが、そこにデータを追加する必要があります。リストの更新については後ほど説明します。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

shopping = ["Apples","Bananas","Milk"]

2.リストの内容全体を印刷します。 [ ] 括弧を含むリストの内容が表示されます。

print(shopping)

3.コードをshopping.pyとして保存し、「実行」>>「現在のスクリプトを実行」をクリックします。出力は['Apples', 'Bananas', 'Milk']のようになります。これはリストが機能していることを示していますが、文章内のコンテンツを生成するためにも使用できます。

4.買い物リストを印刷していることを識別するために、別の印刷関数を追加します。

print("The shopping list contains")

5.範囲を指定したfor ループを使用して、リストの各項目を出力します。Python の文字列フォーマットメソッドを使用して、項目を文字列として文に挿入します。範囲を作成するために、リスト内の項目の数をどうやって知るのでしょうか?今のところは問題ありません。len() 関数が買い物リストオブジェクトの長さを計算し、その値を範囲として使用します。その後、 for ループは項目を反復処理し、ループが実行されるたびに i の値を更新します。

for i in range(len(shopping)): print("I need to buy {:s}".format(shopping[i]))

6.コードを保存し、「実行」>>「現在のスクリプトを実行」をクリックします。リスト全体が印刷され、その後、買い物リストのテキストがPythonシェルに表示されます。

完全なコードリスト: リストの作成

shopping = ["Apples","Bananas","Milk"]
print(shopping)
print("The shopping list contains")
for i in range(len(shopping)): print("I need to buy {:s}".format(shopping[i]))

リスト内のアイテムの更新と削除

リストは変更可能なオブジェクトです。つまり、リストのエントリを作成、更新、削除できます。現在の買い物リストにはバナナがありますが、フルーツボウルの中を見るとバナナはたくさんあるのにブドウがないことがわかりました!そこで、バナナをブドウに置き換えてみましょう。

1. 前の for ループの外側の新しい行に、買い物リストの内容を更新していることを示すメッセージを出力します。

print("Shopping list has changed")

2.リスト内の「Bananas」項目の値を更新して、「Grapes」に変更します。「Bananas」はリストの2番目の項目であることが分かっています。Pythonは0から数えるので、リスト内の項目の位置は1であることがわかります。

shopping[1] = "Grapes"

3.範囲を指定したforループを使って、リストの各項目を出力します。これにより、古いリストと更新されたリストが出力されます。

4.コードを保存して実行します。更新されたリストと以前のリストがPythonシェルに出力されます。

冷蔵庫のドアを開けると、買い物リストにバター、卵、チーズを追加する必要があることに気づきました。リストの末尾に1つのアイテムを追加することも、リストを拡張して複数のアイテムを渡すこともできます。

1.前の for ループの外側の新しい行に、買い物リストの内容を再度更新していることを示すメッセージを出力します。

print("Shopping list has changed again")

2.買い物リストに「Cheese」を追加します。「追加」をクリックすると、アイテムがリストの末尾に追加されます。

shopping.append("Cheese")

3. extend を使って買い物リストに複数のアイテムを追加します。extendでは、追加したいアイテムを括弧で囲む必要があります。これらの新しいアイテムは任意の反復可能なオブジェクトにすることができますが、今回はアイテムを格納するためにタプルを使用しました。

shopping.extend(("Butter","Eggs"))

4.範囲を指定したforループを使って、リストの各項目を出力します。これにより、古いリストと更新されたリストが出力されます。

5.コードを保存して実行します。更新されたリストと以前のリストがPythonシェルに出力されます。

お店に着いたら、卵は必要ないことに気づきました! ということで、リストから外しましょう。

1.前の for ループの外側の新しい行に、卵を削除していることを示すメッセージを出力します。

print("Removing the eggs")

2.買い物リストから卵を削除します。項目の値は大文字と小文字が区別されることに注意してください。「Eggs」と「eggs」は同じではありません。

shopping.remove("Eggs")

3.条件文を使って、買い物リストに卵がなくなったことを確認します。卵がある場合は、削除し忘れたと表示されます。卵がない場合は、else条件が成立し、リストから卵が削除されたことが出力されます。

if "Eggs" in shopping: print("I forgot to remove the eggs")
else: print("The eggs have been removed from the list")

4.コードを保存して実行します。卵が取り除かれた場合は確認メッセージが表示され、取り除かれていない場合はリマインダーが表示されます。

完全なコードリスト: リスト内のアイテムの更新と削除

print("Shopping list has changed")
shopping[1] = "Grapes"
for i in range(len(shopping)): print("I need to buy {:s}".format(shopping[i])) print("Shopping list has changed again")
shopping.append("Cheese")
shopping.extend(("Butter","Eggs"))
for i in range(len(shopping)): print("I need to buy {:s}".format(shopping[i])) print("Removing the eggs")
shopping.remove("Eggs")
if "Eggs" in shopping: print("I forgot to remove the eggs")
else: print("The eggs have been removed from the list")

リストでForループを使用する

先ほど、範囲を指定したforループを使って、買い物リストのアイテムをその位置(インデックス番号)に基づいて出力しました。しかし、別の方法もあります。変数を作成し、forループを使って買い物リストのアイテムを反復処理し、出力することができます。これらはすべて、インデックス番号を必要とせずに実行できます。

1.新しい行に、 for ループを使用していることを示すメッセージを出力します。

print("Using a for loop to print our shopping list")

2. forループを使って、買い物リストの各アイテムを反復処理します。「item」の値は、forループが実行されるたびに変化します。すべてのアイテムを反復処理したら、forループは終了します。

for item in shopping:

3.文字列フォーマットを使用して、Pythonシェルにメッセージを出力します。リスト内で処理を行っているため、shopping(item)ではなくitem変数のみを渡す必要があります。

 print("I need to buy {:s}".format(item))

4.コードを保存して実行します。forループによって買い物リストの内容が出力されます。

完全なコードリスト: リストでのForループの使用

print("Using a for loop to print our shopping list")
for item in shopping:
print("I need to buy {:s}".format(item))

実際のプロジェクトでのリストの使用

Pythonのリスト

(画像提供:Tom's Hardware)

デスクトップパソコンの買い物リストはあまり役に立ちませんが、携帯電話や家族の携帯電話の買い物リストは役に立ちます。AndroidとiOSデバイスに通知を送信するサービス、 ntfy.shを使用します。辞書の使い方では、デバイスにメッセージや画像を送信するサービスとしてntfy.shを使用しました。

1. Android / iOS デバイスにntfy.sh をインストールします。

2.アプリを開き、「+」をクリックして新しいサブスクリプションを作成します。

Pythonのリスト

(画像提供:Tom's Hardware)

3.新しいトピックを作成し、「購読」をクリックします。ここではth-shopping-listを使用します。ご自身に合ったトピックを作成してください。トピックはパスワード保護されていない場合があるため、機密情報は送信しないでください。

Pythonのリスト

(画像提供:Tom's Hardware)

4.デバイスで アプリを開いたままにしておきます。

ここで、Thonny を実行している PC に注目します。

5.空のファイルを作成します。

6.リクエストモジュールをインポートします。これは、ネットワーク接続の送受信用に設計された、事前に記述されたPythonコードのモジュールです。

import requests

7. 「ショッピング」という空白のリストを作成します。

shopping = []

8.変数 num_items を作成し、入力関数を使って質問への回答を取得し、整数として保存します。入力関数は prompt 引数を取ることができ、これを使ってカスタムプロンプトを作成できます。

num_items = int(input("How many items do you want to add to your shopping list? "))

9. forループを使用して、必要な数のアイテムを反復処理し、ユーザーに商品名を入力してもらい、ショッピングリストに追加します。別の入力関数を使用して、ユーザーのショッピングアイテムを取得します。プロンプトは文字列である必要があります。f文字列フォーマットを使用して変換します。変換するのは、アイテムであるiの値です。iの値は、リスト内のアイテムの位置を示すインデックス番号にリンクされています。リストでは0から始まりますが、入力プロンプトでは、ほとんどの人が理解しやすいように、値に1を加算します。これは純粋に装飾的なものであり、リストのインデックス番号には影響しません。

for i in range(num_items): item = input(f"Enter item {i+1}: ") shopping.append(item)

10.メッセージを出力し、forループを使って買い物リストの内容を出力します。これはデバッグ用ですが、リストが正しいかどうかを確認するのにも役立ちます。

print("The shopping list is:")
for item in shopping: print(item)

11.新しい変数「shopping_list」を作成し、買い物リストの内容全体をカンマで区切って格納します。これは、リストがntfy.sh経由で正しく送信されるようにするためのフォーマット手順です。

shopping_list = (", ".join(shopping))

12.買い物リストを適切なntfy.shトピックに送信します。shopping_listオブジェクトは送信するデータであり、ヘッダーはデータの内容を明確に示すタイトルです。

requests.post("https://ntfy.sh/th-shopping-list", data=shopping_list,
headers={ "Title": "Shopping List" })

13.コードをshopping-list.pyとして保存し、「実行」をクリックします。買い物リストの項目数を入力し、Enterキーを押します。各項目を入力してEnterキーを押します。入力が完了したら、最後にEnterキーを押すと、リストが携帯電話/モバイルデバイスに送信されます。通知がデバイスに届くかご確認ください。

Pythonのリスト

(画像提供:Tom's Hardware)

完全なコードリスト: 実際のプロジェクト

import requests
shopping = []
num_items = int(input("How many items do you want to add to your shopping list? "))
for i in range(num_items): item = input(f"Enter item {i+1}: ") shopping.append(item)
print("The shopping list is:")
for item in shopping: print(item)
shopping_list = (", ".join(shopping))
requests.post("https://ntfy.sh/th-shopping-list", data=shopping_list,
headers={ "Title": "Shopping List" })

その他のPythonチュートリアル

  • Windows 10と11にPythonをインストールする方法
  • PythonでForループを使う方法
  • Pythonで列挙する方法
  • Pythonで実行可能なアプリケーションを作成する方法
  • Pythonで画像から背景を削除する方法
  • Python、HTML、ThonnyでWebアプリを作成する方法
  • Raspberry Pi カメラモジュール 3 を Python コードで使う方法

Pythonのハウツー

  • Windows 10と11にPythonをインストールする方法
  • PythonでForループを使う方法
  • Pythonで列挙する方法
  • Pythonで実行可能なアプリケーションを作成する方法
  • Pythonで画像から背景を削除する方法
  • Python、HTML、ThonnyでWebアプリを作成する方法
  • Raspberry Pi カメラモジュール 3 を Python コードで使う方法