No Result
View All Result
WebHack
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車
No Result
View All Result
WebHack
No Result
View All Result
Home プログラミング

【Python初心者向け】リスト(list)の使い方を徹底解説!〜初期化編〜

fukii by fukii
2020年2月22日
in プログラミング
0
【Python初心者向け】辞書(dict)の使い方を徹底解説!
0
SHARES
174
VIEWS

リスト(list)は「複数の値を1つのまとまりにして扱えるようにする機能」のことです。

複数の値をまとめて扱う機能は他にもありますが(タプルや辞書など)、その中でもリストが最も基本的な方法と言えます。

リストについては複数回に渡って解説しますが、ここでは「初期化」にフォーカスしていきます。

  • リストって何?
  • リストはどうやって初期化するの?
  • リストの応用的な初期化方法が知りたい!

といった方の疑問へ回答しつつ、リストについて深く知っていきましょう。

目次

  • 1 リスト(list)の作り方
    • 1.1 基本的なリストの初期化方法
    • 1.2 要素を繰り返したリストを作成する
    • 1.3 list()を使ってリストを初期化する
    • 1.4 多次元リストを初期化する
    • 1.5 リストの初期化に改行を使う
    • 1.6 リスト内包表記を使ってリストを初期化する
    • 1.7 リスト内包表記でfor..inを複数含める

リスト(list)の作り方

リストの作り方(初期化)を解説します。

リストの作り方は主に4つありますので、それぞれ見ていきましょう。

また、最後に多次元リストの初期化についても解説します。

基本的なリストの初期化方法

最も基本的なリストの初期化方法から見ていきましょう。

リストを初期化するには次のようにします。

書式[要素1, 要素2, 要素3 ... 要素n]

実際に初期化したサンプルがこちらです。

                          numbers = [3, 14, 15, 92, 65, 35]strings = ["なまむぎ", "なまごめ", "なまたまご"]print(numbers)print(strings)
                        
結果[3, 14, 15, 92, 65, 35]['なまむぎ', 'なまごめ', 'なまたまご']

numbersには数値を、stringsには文字列の要素が含まれています。

カンマの後に空白を入れていますが、これはただ見やすくするためのものなので、あってもなくても問題ありません(私は慣習的に入れています)。

また、リストの要素は型が異なっていても問題ありません。

                          mixes = [3, "こんにちは", True, 0.314]print(mixes)
                        
結果[3, 'こんにちは', True, 0.314]

また、要素が一つも入っていない「空のリスト」を作ることもできます。

例えば後でforで繰り返しながらリストに要素を追加していきたい場合等で空のリストを初期化することがあります。

                          empty_list = []print(empty_list)
                        
結果[]

要素を繰り返したリストを作成する

同じ要素を繰り返したリストを作成する場合は「*」演算子を使うと簡単です。

例えば「とりあえず全ての要素を0で初期化しておきたいな」といった場合に役立ちます。

                          numbers_1 = [0, 0, 0, 0, 0]numbers_2 = [0] * 5 #↑と同じ意味合いprint(numbers_1)print(numbers_2)
                        
結果[0, 0, 0, 0, 0][0, 0, 0, 0, 0]

また、複数の要素が入ったリストの場合は、その複数要素の並び順のまま繰り返されたリストが作成されます。

                          mixes = [3, "こんにちは", True, 0.314]mixes_by_3 = mixes * 3print(mixes_by_3)
                        
結果[3, 'こんにちは', True, 0.314, 3, 'こんにちは', True, 0.314, 3, 'こんにちは', True, 0.314]

list()を使ってリストを初期化する

次は組み込み関数のlist()を使ってリストを初期化する方法を見ていきましょう。

list()はPythonに最初からインストールされている関数で、range()や文字列を引数に与えることでリストを作成してくれます。

まずはrange()を使って指定した値の間の数値の連番が入ったリストを作成してみましょう。

                          range_list = list(range(-3, 4))print(range_list)
                        
結果[-3, -2, -1, 0, 1, 2, 3]

連番のリストが作成されました。

rangeの終了値を「4」にしているのは「0」から数えられているからです。

今回のように「-3から3」までとしたい場合は「3」ではなく+1した「4」にする必要があるので注意しましょう。

 

では次に文字列をlist()を使ってリストに変換しましょう。

文字列をリストにすると、一つ一つの文字が1要素になり、バラバラになります。

実際に見てみましょう。

                          aomaki = "あおまきがみあかまきがみきまきがみ"chars = list(aomaki)print(chars)
                        
結果['あ', 'お', 'ま', 'き', 'が', 'み', 'あ', 'か', 'ま', 'き', 'が', 'み', 'き', 'ま', 'き', 'が', 'み']

ちなみに、リストの内容を文字列に変換する場合はjoin()関数を使います。

                          strings = ["あおまきがみ", "あかまきがみ", "きまきがみ"]joined_strings = "".join(strings)print(joined_strings)
                        
結果あおまきがみあかまきがみきまきがみ

多次元リストを初期化する

次に多次元リストの初期化について見ていきましょう。

リストの要素にリストを入れることで多次元のリストを初期化することができます(リストのネスティング、または単にネストと言います)。

では多次元リストを初期化してみましょう。

                          list_1 = [["あおまきがみ"], ["あおまきがみ"], ["きまきがみ"]]list_2 = [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]]]print(list_1)print(list_2)
                        
結果[['あおまきがみ'], ['あおまきがみ'], ['きまきがみ']][[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]]]

list_1はリストの要素にリストが入っているので「2次元リスト」と呼びます。

list_2は2次元リストの中にさらにリストが入っているので「3次元リスト」と呼びます。

つまり階層によって多次元リストの呼び方が変わります。3次元リストにさらに一つ階層を追加すれば「4次元リスト」になります。

リストの初期化に改行を使う

先ほどの多次元リストですが、2次元リストならまだ良いですが、3次元リストともなると相当見にくかったと思います。

多次元リストを初期化する場合は改行を使うことでとても見やすくなり、ミスが減ります。

                          
                            list_1 = [    ["あおまきがみ"]    ,["あおまきがみ"] #コメントを記述できる    ,["きまきがみ"]]list_2 = [    [         [1, 2]        ,[3, 4]        ,[5, 6]    ]    ,[        [7, 8]        ,[9, 10]        ,[11, 12]    ]]print(list_1)print(list_2)#結果は同じ
                            
                          
                        

改行することでどの括弧とどの括弧が対応しているのかが分かりやすくなりました。

改行する場合でもカンマは必要です(私はカンマは前付け派ですが、後付けでも問題ありません)。

リスト内包表記を使ってリストを初期化する

初期化編の最後に、応用的な初期化方法である「リスト内包表記」を解説します。

リスト内包表記とは「for..inを使って、イテラブルオブジェクトから新しいリストを作成する」タイプの初期化方法です。

イテラブルとはリストやタプル、辞書のような「値に含まれている要素を一つ一つ取り出せるタイプのオブジェクト」のことです。

つまりリストを使って新しいリストを作ったりできるのがリスト内包表記ということになります。

書式[式 for 要素 in イテラブル]

では実際にリスト内包表記を使ってリストを初期化してみましょう。

                          import mathfloat_list = [3.14, 1.20, 81.99, 31.24, 1.02]int_list = [math.floor(num) for num in float_list]print(int_list)
                        
結果[3, 1, 81, 31, 1]

少し複雑ですが、上のプログラムでやってることは「floorを使って少数を切り捨てて、新しいリストを作成している」だけです。

重要なのは内包表記の式のところです。式の内容によって作成されるリストが変わってきます。

また、リスト内包表記では条件式を追加することで「条件に合った要素のみを取り出して新しいリストを作成」できます。

書式[式 for 要素 in イテラブル if 条件式]

先ほどのプログラムに「2以上80以下」という条件式を加えます。

                          import mathfloat_list = [3.14, 1.20, 81.99, 31.24, 1.02]int_list = [math.floor(num) for num in float_list if 2 <= num <= 80] #2以上80以下print(int_list)
                        
結果[3, 31]

1.20、1.02は2未満、81.99は80超過なので、3.14と31.24のみリストに格納されました。

リスト内包表記でfor..inを複数含める

リスト内包表記では1次元のイテラブルしか扱えない訳ではなく、2次元以上のリストを使うこともできます。

多次元リストをリスト内包表記で扱うには「for..inを複数含める」と、最も深い要素を取得できるようになります。

これは実際に見てみたほうが早いでしょう。次のコードを見てください。

                          lists = [[3, 6, 9], [12, 15, 18]]line_list = [num * 2 for list in lists for num in list]print(line_list)
                        
結果[6, 12, 18, 24, 30, 36]

上のコードでは、まずlistsの要素をlistに一つずつ取り出ています。

listsは2次元リストなのでlistにはリストが取り出されているので、2つ目のfor..inでnumにリストの値を取り出しています。

最後にnumに2を乗算した値をline_listに格納しています。

for..inを2つ含めることで、多次元の配列の要素を一つ一つ取り出すことができました。

 

関連記事

WebHack
【Python初心者向け】リスト(list)の使い方を徹底解説!〜参照・更新・追加・削除編〜
https://webhack.jp/programming/%e3%80%90python%e5%88%9d%e5%bf%83%e8%80%85%e5%90%91%e3%81%91%e3%80%91%e3%83%aa%e3%82%b9%e3%83%88list%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9%e3%82%92%e5%be%b9%e5%ba%95%e8%a7%a3%e8%aa%ac%ef%bc%81-2/?preview_id=6971&preview_nonce=310ef66c08&post_format=standard&_thumbnail_id=6680&preview=true
前回の初期化編では、リストをどう作るのかにフォーカスを当てて、リストの初期化方法を網羅的に解説しました。リストを初期化した後の、要素へのアクセスや変更方法について見ていきましょう。ここでは次の疑問を解決します。 リスト内の要素にどうやってアクセス...
WebHack
【初心者向け!】Pythonとは?特徴と基本的な構文
https://webhack.jp/programming/%e3%80%90%e5%88%9d%e5%bf%83%e8%80%85%e5%90%91%e3%81%91%ef%bc%81%e3%80%91python%e3%81%a8%e3%81%af%ef%bc%9f%e7%89%b9%e5%be%b4%e3%81%a8%e5%9f%ba%e6%9c%ac%e7%9a%84%e3%81%aa%e6%a7%8b%e6%96%87/?preview_id=6661&preview_nonce=b976cd9387&post_format=standard&_thumbnail_id=6680&preview=true
プログラミング言語に興味があれば、Pythonと言う言葉は一度は聞いたことがあるのではないでしょうか?Pythonは近年最も勢いのあるプログラミング言語です。Githubという有名な会社の年次報告書「The State of the Octoverse」によると、PythonはjavaやPHP、C++、C#...
Tags: list Python リスト 内包表記 初期化 多次元 要素
Previous Post

【初心者向け】Swiftとは?できることや特徴を解説【iOSアプリ開発】

Next Post

【プロの映像を簡単に制作】DJIのRONIN-SCを徹底レビュー

fukii

fukii

Next Post
【プロの映像を簡単に制作】DJIのRONIN-SCを徹底レビュー

【プロの映像を簡単に制作】DJIのRONIN-SCを徹底レビュー

コメントを残す コメントをキャンセル

人気記事

  • 【作業効率化に最適】LGの29インチウルトラワイドモニターを徹底レビュー

    【作業効率化に最適】LGの29インチウルトラワイドモニターを徹底レビュー

    0 shares
  • スマホだけでじゃない!5Gで実現できること&変わる生活

    0 shares
  • 【プロの映像を簡単に制作】DJIのRONIN-SCを徹底レビュー

    0 shares
  • 【デュアルスクリーンの4Kアクションカメラ】OSMO ACTIONを徹底レビュー

    0 shares
  • 【N高校】プログラミングコースって実際どうなの?

    0 shares

カテゴリー

  • IoT/ガジェット (165)
  • Webサービス (70)
  • お知らせ (4)
  • プログラミング (40)
  • モバイルアプリ (41)
  • 自動運転 (2)
  • 通信技術 (18)
  • 電気自動車 (3)

タグ

5G AI Android Apple Bluetooth Chrome Chrome拡張機能 DJI ELECOM GoodNotes5 Google GoPro IoT iPad iPad OS iPad Pro iPhone Java Javascript kickstarter list NumPy ozmoaction Python Twitter Wi-Fi Wi-Fiルーター YouTube アクションカメラ アプリ オススメ キックスターター クラウドファンディング グーグル スマートフォン ディープラーニング プログラミング プログラミング言語 モバイルバッテリー リスト リモートワーク リモート会議 ワイヤレス充電器 新型コロナウイルス 防災アイテム

WebHackはインターネットサービスやガジェットなどITトレンド情報をお伝えしていきます。

Category

  • IoT/ガジェット
  • Webサービス
  • お知らせ
  • プログラミング
  • モバイルアプリ
  • 自動運転
  • 通信技術
  • 電気自動車

Follow Us

  • プライバシーポリシー
  • お問い合わせ

Copyright © 2012 - 2017, JNews - Premium WordPress news & magazine Jegtheme .

No Result
View All Result
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車

Copyright © 2012 - 2017, JNews - Premium WordPress news & magazine Jegtheme .