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月24日
in プログラミング
0
【Python初心者向け】辞書(dict)の使い方を徹底解説!
0
SHARES
24
VIEWS

前回の参照・更新・追加・削除編では、リストを初期化した後の要素へのアクセスや更新・追加・削除方法についてお話ししました。

【Python初心者向け】リスト(list)の使い方を徹底解説!〜参照・更新・追加・削除編〜

次はリストについて、ここまでに登場しなかったメソッドや連結などのいくつかの使い方を見ていきましょう。

目次

  • 1 リストの連結
    • 1.1 「+」を使って連結する
    • 1.2 extend()を使って連結する
  • 2 リストをスライスする
    • 2.1 指定した範囲の要素を取り出す
    • 2.2 マイナスを指定してスライスする
    • 2.3 要素を等間隔で抜き出す
  • 3 リスト同士の比較
    • 3.1 ==での比較
    • 3.2 isでの比較
  • 4 リストの要素を並び替える
    • 4.1 sort()を使って並び替える
    • 4.2 lenを使って文字列の長さでソートする
    • 4.3 sorted()を使って新しいリストを作る

リストの連結

まずはリストの連結方法から見ていきましょう。

連結とは2つ以上のリストを繋げることです。

「+」を使って連結する

連結自体は非常に簡単で、「+」演算子でリスト同士を繋げるだけです。

                          list_1 = [1, 2, 3]list_2 = ["a", "b", "c"]connected_list = list_1 + list_2print(connected_list)
                        
結果[1, 2, 3, 'a', 'b', 'c']

ちなみにここでも代入演算子の「+=」が使えます。

                          list = [1, 2, 3]list += ["a", "b", "c"]print(list) #結果は同じ
                        

extend()を使って連結する

extend()メソッドを使えば、代入演算子と同じようにリストを連結できます。

特段違いはないので、使いやすい方で問題ありません。

                          list = [1, 2, 3]list.extend(["a", "b", "c"])print(list)
                        

リストをスライスする

次にリストをスライスする方法を見ていきましょう。

スライスとはリストの中から一部分だけを取り出すことです。

リストのスライス方法は主に2つあります。一つは指定した範囲の要素を取り出すスタンダードなスライス。もう一つは要素を等間隔に抜き出すスライスです。

指定した範囲の要素を取り出す

まずはシンプルなスライスから見ていきましょう。

指定範囲のスライスは開始位置と終了位置を書式に合わせて指定するだけです。

書式リスト[開始位置 : 終了位置]

開始位置も終了位置も省略が可能です。両方とも省略すると[:]だけが残りますが、これは「全ての要素」を意味し、[開始位置 : ]なら開始位置から最後の要素まで、[ : 終了位置]なら最初の要素から終了位置までの要素を抜き出します。

一つ注意があります。それは「開始位置はインデックス番号だが、終了位置はインデックス番号 + 1」という点です。これは実際にスライスしてみたほうが早いでしょう。

                          list = ["1.林檎", "2.蜜柑", "3.葡萄", "4.甘蕉", "5.西瓜", "6.甜瓜"]print(list[:]) #全て抜き出す(リストの複製に便利)print(list[2:]) #3番目の要素から最後までprint(list[:3]) #最初から3番目の要素までprint(list[1:4]) #2番目から4番目の要素まで
                        
結果['1.林檎', '2.蜜柑', '3.葡萄', '4.甘蕉', '5.西瓜', '6.甜瓜']['3.葡萄', '4.甘蕉', '5.西瓜', '6.甜瓜']['1.林檎', '2.蜜柑', '3.葡萄']['2.蜜柑', '3.葡萄', '4.甘蕉']

それぞれのスライス結果が表示されました。

3〜4行目は終了位置をそれぞれ3と4で指定していますが、実際にスライスされたリストは「インデックス番号 + 1」分まで抜き出されていますね。

バグを引き起こしがちなところなので、注意しましょう。

マイナスを指定してスライスする

次のスライス方法に行くまえに、マイナスを指定してスライスしたらどうなるかを見ていきましょう。

開始位置と終了位置にマイナスを指定すると、リストの後ろの方から抜き出すことができます。

例えば最後の要素は[-1:]、最後の3つの要素は[-3:]で抜き出せます。

実際にやってみましょう。

                          list = ["1.林檎", "2.蜜柑", "3.葡萄", "4.甘蕉", "5.西瓜", "6.甜瓜"]print(list[-1:]) #最後の要素print(list[-3:]) #最後の3つの要素print(list[:-2]) #最後から2つ以外の要素print(list[-4:-1]) #最後から4つめの要素から最後から2つ目の要素まで
                        
結果['6.甜瓜']['4.甘蕉', '5.西瓜', '6.甜瓜']['1.林檎', '2.蜜柑', '3.葡萄', '4.甘蕉']['3.葡萄', '4.甘蕉', '5.西瓜']

マイナス値でのスライスは間違えやすいので注意して使いましょう。

要素を等間隔で抜き出す

次に要素を等間隔で抜き出すスライス方法を見ていきましょう。

等間隔で抜き出す場合は通常のスライスの終了位置の後に「ステップ数」を追記します。

書式リスト[開始位置 : 終了位置 : ステップ数]

では実際に等間隔で要素を抜き出してみましょう。

ステップ数だけ指定したい場合は[::ステップ数]という形になります。

                          list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]print(list[::2]) #奇数print(list[1::2]) #偶数print(list[2::3]) #3の倍数print(list[2:10:2])
                        
結果[1, 3, 5, 7, 9, 11][2, 4, 6, 8, 10, 12][3, 6, 9, 12][3, 5, 7, 9]

ちなみに、ステップ数をマイナスにすると「リストを反転させる」ことができます。

                          list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]print(list[::-1])print(list[::-2])
                        
結果[12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1][12, 10, 8, 6, 4, 2]

リスト同士の比較

今度はリスト同士の比較方法を見ていきましょう。

リスト同士の比較は、ただ同じ要素が入った別のリストなのか、同じリストを参照している変数なのかで比較結果が変わってきます。

==での比較

まずは==で比較してみましょう。

==は「同じ要素のリスト」の場合True、そうでない場合はFalseを返します。

実際にやってみましょう。

                          list_1 = ["abc", "def", "ghi"]list_2 = ["abc", "def", "ghi"]list_3 = ["abc", "ghi", "def"]print(list_1 == list_2)print(list_1 == list_3)
                        
結果TrueFalse

list_1とlist_2は完全に同じ要素なのでTrue、list_1とlist_3は要素の並びが違うのでFalseになります。

isでの比較

リストが同じ要素を参照しているかを判定するにはis, is not演算子を使います。

                          list_1 = ["abc", "def", "ghi"]list_2 = list_1list_3 = ["abc", "def", "ghi"]print(list_1 is list_2) #同じリスト(オブジェクト)print(list_1 is list_3) #同じ要素だけど別のリストprint(list_1 is not list_3)
                        
結果TrueFalseTrue

list_2にはlist_1のリストの参照を渡しているので、list_1とlist_2は同じオブジェクトとして扱われます(なので結果はTrue)。

一方でlist_1とlist_3は同じ要素なので「==」ではTrueになりますが、リストとしては別物です(別のオブジェクト)。

リストの要素を並び替える

最後にリストの要素の並び替え方法について見ていきましょう。

sort()を使って並び替える

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

特に引数を指定しない場合、sort()は数値の場合は小さい順、文字列の場合はアルファベット順、日本語の場合はあいうえお順になります。

                          list_num = [25, 21, 88, -39, 9, 4, -54, 0, 77]list_num.sort()print(list_num)list_eng = ["apple", "banana", "orange", "cherry", "melon"]list_eng.sort()print(list_eng)list_jpn = ["りんご", "ばなな", "みかん", "さくらんぼ", "めろん"]list_jpn.sort()print(list_jpn)
                        
結果[-54, -39, 0, 4, 9, 21, 25, 77, 88]['apple', 'banana', 'cherry', 'melon', 'orange']['さくらんぼ', 'ばなな', 'みかん', 'めろん', 'りんご']

また、リストを降順に並べたい場合はreverse引数にTrueを指定します。

                          list_num = [25, 21, 88, -39, 9, 4, -54, 0, 77]list_num.sort(reverse = True)print(list_num)
                        
結果[88, 77, 25, 21, 9, 4, 0, -39, -54]

lenを使って文字列の長さでソートする

sort()のkey引数にlenを指定することで、文字列の長さでソートすることができます。

                          list = ["book", "pen", "basketball", "lemon", "student", "homework", "sports"]list.sort(key = len)print(list)
                        
結果['pen', 'book', 'lemon', 'sports', 'student', 'homework', 'basketball']

sorted()を使って新しいリストを作る

sorted()を使うと、元のリストはそのままに、ソートされた新しいリストを作成することができます。

sorted()はsort()と違い組み込み関数なので、書き方が違うことに注意が必要です。

                          list = ["book", "pen", "basketball", "lemon", "student", "homework", "sports"]list_sorted = sorted(list, reverse = True, key = len) #reverseやkeyも指定できるprint(list)print(list_sorted)
                        
結果['book', 'pen', 'basketball', 'lemon', 'student', 'homework', 'sports']['basketball', 'homework', 'student', 'sports', 'lemon', 'book', 'pen']

 

Tags: スライス ソート リスト 比較 連結
Previous Post

【ミラーレス一眼カメラの入門編】LUMIX「GH-5」を徹底レビュー

Next Post

【超簡単】Gmailが相手に開封されたかを通知で確認する方法

fukii

fukii

Next Post
Gmailが相手に開封されたかを通知で確認する方法

【超簡単】Gmailが相手に開封されたかを通知で確認する方法

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

人気記事

  • 【業界最軽量】VLOGに最適なスマートフォン用ジンバル「VLOG pocket」が便利すぎる!

    【業界最軽量】VLOGに最適なスマートフォン用ジンバル「VLOG pocket」が便利すぎる!

    0 shares
  • 【144Hz&WQHD&1ms対応】最強のゲーミングモニターおすすめ5選を紹介!

    0 shares
  • 【Netflix】英語と日本語の字幕を同時表示できるChrome拡張機能を紹介!【英語学習】

    0 shares
  • 【Python初心者向け】Pandasの使い方を徹底解説!

    0 shares
  • 【超簡単】Gmailが相手に開封されたかを通知で確認する方法

    0 shares

カテゴリー

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

タグ

5G AI Amazon ANKER Apple Apple Watch Bluetooth Chrome Chrome拡張機能 DearMob iPhoneマネージャー DJI ELECOM GoodNotes5 Google GoPro html IoT iPad iPad OS iPhone Java Javascript kickstarter list NumPy Progate Python Twitter VideoProc 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 .