Python リスト内包表記:追加、ソート、長さ

⚡ スマートサマリー

A Python リストは、数値や角括弧で囲まれた文字列などのオブジェクトを保持する可変コンテナです。ここでは、リストへのアクセス、スライス、更新、削除、追加、ソート、ループ処理の方法、およびリスト内包表記の仕組みについて学びます。

  • ???? それは何ですか: A Python リストは、角括弧で囲まれた、変更可能な順序付きコンテナです。
  • 🔢 インデックス作成: インデックスを使用して項目にアクセスし、末尾から数える場合は負のインデックスを使用します。
  • ✂️ スライス: サブリストをlist[start:end]でスライスします。このスライスは上限値を含みません。
  • 🛠️ メソッド: append()、pop()、remove()、reverse()、sort()など、リストを変更する関数。
  • 理解度: リスト内包表記を使えば、たった1行の短いコードで新しいリストを作成できます。
  • 🤖 AIによる支援: CopilotのようなAIツールは、リストと理解コードを瞬時に生成します。

Python リストの理解

何が Python リスト?

リストとはまさにその名の通り、さまざまなものを含むコンテナです。 Python オブジェクトは、整数、単語、値などです。他のプログラミング言語の配列に相当します。角括弧で表されます (これは、括弧で区切られるタプルと異なる属性の 1 つです)。また、タプルが不変であるのとは異なり、変更可能、つまり変更または更新できます。

の例 Python リスト:

Python リストは同種、つまり同じタイプのオブジェクトを含むことができます。また、異種、つまり異なるタイプのオブジェクトを含むこともできます。

同種リストの例には次のものがあります。

list of integers =  [1, 2, 3, 8, 33]
list of animals = ['dog', 'cat', 'goat']
list of names = ['John', 'Travis', 'Sheila']
list of floating numbers = [2.2, 4.5, 9.8, 10.4]

異種リストの例には次のものがあります。

[2, 'cat', 34.33, 'Travis']
[2.22, 33, 'pen']

リスト内の値へのアクセス

リスト内の値にアクセスするには、リスト内のオブジェクトのインデックスを使用できます。 Python リストは、順序付きリスト内の要素の位置を指します。例:

list = [3, 22, 30, 5.3, 20]
  • 上記のリストの最初の値 3 のインデックスは 0 です。
  • 22 番目の値 1 のインデックスは XNUMX です。
  • 30 番目の値 2 のインデックスは XNUMX です。

等々。 リストの各値にアクセスするには、次を使用します。

list[0] to access 3
list[1] to access 22
list[2] to access 30
list[3] to access 5.3
list[4] to access 20

リストの最後のメンバーには、インデックス -1 を使用してアクセスすることもできます。 例えば、

list[-1] = 20

Python リストのスライス

リスト スライスはリストのサブセットを分割する方法であり、リスト オブジェクトのインデックスもこれに使用されます。 たとえば、上記と同じリストの例を使用します。

list[:] = [3, 22, 30, 5.3, 20] (all the members of the list];
list[1:3] = [22, 30] (members of the list from index 1 to index 3, without the member at index 3);
list[:4] = [3, 22, 30, 5.3] (members of the list from index 0 to index 4, without the member at index 4)
list[2:-1] = [30, 5.3] (members of the list from index 2, which is the third element, to the second to the last element in the list, which is 5.3).

Python リストは上限が排他的であり、これはリストのスライス中の最後のインデックスが通常無視されることを意味します。そのため

list[2:-1] = [30, 5.3]

[30、5.3、20] ではありません。 上記の他のすべてのリスト スライスの例にも同じことが当てはまります。

リストの更新

リスト = [物理学、化学、数学] があり、そのリストを [生物学、化学、数学] に変更して、インデックス 0 のメンバーを効果的に変更したいとします。これは、そのインデックスを欲しい新メンバー。

すなわち、

list = [physics, chemistry, mathematics]
    list[0] = biology
    print(list)

出力: [生物学、化学、数学]

これにより、インデックス 0 のメンバー (物理学) が必要な新しい値 (化学) に置き換えられます。 これは、変更したいリストのメンバーまたはサブセットに対して実行できます。

別の例を挙げると、integers というリストがあり、その中に [2, 5, 9, 20, 27] という数字が含まれているとします。このリストの 5 を 10 に置き換えるには、次のようにします。

integers = [2, 5, 9, 20, 27]
           integers[1] = 10
           print(integers)

>>> [2, 10, 9, 20, 27]

整数リストの最後のメンバー (27) を 30.5 などの自由な数値に置き換えるには、次のように使用します。

integers = [2, 5, 9, 20, 27]
           integers[-1] = 30.5
           print(integers)

>>> [2, 5, 9, 20, 30.5]

リスト要素の削除

3あり Python リスト要素を削除するメソッド: list.remove()、list.pop()、および del 演算子。Remove メソッドは削除する特定の要素を引数として受け取りますが、pop と del は削除する要素のインデックスを引数として受け取ります。例:

リスト = [3, 5, 7, 8, 9, 20]

リストから 3 (最初の要素) を削除するには、次のようにします。

  • list.remove(3) または
  • list.pop[0]、または
  • リスト削除[0]

リストからインデックス 8 の項目 3 を削除するには、次のように使用できます。

  • list.remove(8)、または
  • リスト.ポップ[3]

リスト要素の追加

要素をリストに追加するには、append メソッドを使用します。これにより、要素がリストの末尾に追加されます。

具体的な例を挙げますと、以下の通りです。

list_1 = [3, 5, 7, 8, 9, 20]
    list_1.append(3.33)
    print(list_1)

    >>> list_1 = [3, 5, 7, 8, 9, 20, 3.33]

    list_1.append("cats")
    print(list_1)
    >>> list_1 = [3, 5, 7, 8, 9, 20, 3.33, "cats"]

組み込み関数 (メソッド) の一覧表示

以下は、リスト組み込み関数とメソッドとその説明の一覧です。

  • 長さ(リスト): これにより、リストの長さが出力として得られます。 例えば:
numbers = [2, 5, 7, 9]
print(len(numbers))
>>> 4
  • 最大(リスト): リスト内の項目を最大値で返します。 例えば:
numbers = [2, 5, 7, 9]
print(max(numbers))
>>> 9
  • 分(リスト): リスト内の項目を最小値で返します。 例えば:
numbers = [2, 5, 7, 9]
print(min(numbers))
>>> 2
  • リスト(タプル): タプルオブジェクトをリストに変換します。 例えば;
animals = (cat, dog, fish, cow)
print(list(animals))
>>> [cat, dog, fish, cow]
numbers = [2, 5, 7, 9]
numbers.append(15)
print(numbers)
>>> [2, 5, 7, 9, 15]
  • リストポップ(インデックス): 指定されたインデックスにある要素をリストから削除します。 例えば;
numbers = [2, 5, 7, 9, 15]
numbers.pop(2)
print(numbers)
>>> [2, 5, 9, 15]
values = [2, 5, 7, 9]
values.remove(2)
print(values)
>>> [5, 7, 9]
  • リスト.リバース(): リストのオブジェクトを反転します。 例えば;
values = [2, 5, 7, 10]
values.reverse()
print(values)
>>> [10, 7, 5, 2]
  • リスト.インデックス(要素): リスト内の要素のインデックス値を取得します。 例えば;
animals = ['cat', 'dog', 'fish', 'cow', 'goat']
fish_index = animals.index('fish')
print(fish_index)
>>> 2
  • 合計(リスト): リスト内のすべての値の合計を取得します。ただし、値がすべて数値 (整数または小数) の場合です。例:
values = [2, 5, 10]
sum_of_values = sum(values)
print(sum_of_values)

>>> 17

リストに文字列などの数値ではない要素が含まれている場合、sum メソッドは機能しません。 次のようなエラーが表示されます。タイプエラー: + のオペランド型はサポートされていません: 'int' および 'str'”

  • list.sort(): 整数、浮動小数点数、または文字列のリストを昇順または降順に並べます。例:
values = [1, 7, 9, 3, 5]
# To sort the values in ascending order:
values.sort()
print(values)

>>> [1, 3, 5, 7, 9]

別の例:

values = [2, 10, 7, 14, 50]
# To sort the values in descending order:
values.sort(reverse = True)
print(values)

>>> [50, 14, 10, 7, 2]

文字列のリストは、アルファベット順または文字列の長さによって並べ替えることもできます。 例えば;

# to sort the list by length of the elements
strings = ['cat', 'mammal', 'goat', 'is']
sort_by_alphabet = strings.sort()
sort_by_length = strings.sort(key = len)
print(sort_by_alphabet)
print(sort_by_length)

>>> ['cat', 'goat', 'is', 'mammal']
        ['is', 'cat', 'goat', 'mammal']

「strings」を使用すると、同じリストをアルファベット順に並べ替えることができます。

ローping リストを通じて

ローping リストを通して行うことは、他のどんなリストと全く同じ方法で行うことができます。ping の機能 Pythonこの方法では、リストの複数の要素に対して同時にメソッドを実行できます。例:

リスト = [10、20、30、40、50、60、70]。

このリストのすべての要素をループするには、たとえば、各要素に 10 を追加します。

for elem in list:
        elem = elem + 5
        print(elem)
    
    >>>>15
        25
        35
        45
        55
        65
        75

リストの最初の XNUMX つの要素をループし、すべてを削除します。

for elem in list[:3]:
    list.remove(elem)

    >>>list = [40, 50, 60, 70]

3 つをループするにはrd (インデックス 2) をリストの最後の要素に追加し、それらを new_list という新しいリストに追加します。

new_list = []	
    for elem in list[2:]:
        new_list.append(elem)
        print(“New List: {}”.format(new_list))
    
   Output:
	New List: [30, 40, 50, 60, 70]

このように、メソッドまたは関数をリストのメンバーに適用して、特定の操作を実行できます。リストのすべてのメンバーをループすることも、リストのスライスを使用してリストのサブセットをループすることもできます。

リストの理解 Python

リスト内包表記は Python すでに作成されているシーケンスを使用して、新しいシーケンス (リスト、辞書など) を作成するために使用される関数。長いループを減らし、コードの読みやすさと保守性を向上させます。

たとえば、1 から 9 までのすべての数字の平方を含むリストを作成したいとします。

list_of squares = []
    for int in range(1, 10):
        square = int ** 2
        list_of_squares.append(square)

    print(list_of_squares)

List_of_squares using for loop:

    [1, 4, 9, 16, 25, 36, 49, 64, 81]

リスト内包表記で同じことを行うには:

list_of_squares_2 = [int**2 for int in range(1, 10)]

    print('List of squares using list comprehension: {}'.format(list_of_squares_2))

Output using list comprehension:

    [1, 4, 9, 16, 25, 36, 49, 64, 81]

上で見たように、リスト内包表記を使用してコードを書くと、従来の for ループを使用するよりもはるかに短く、高速になります。これは、 for ループの代わりにリスト内包表記を使用する 1 つの例にすぎませんが、これを複製して、 for ループを使用できる多くの場所で使用できます。特にコードが複雑な場合は、 for ループを使用する方がよい場合もありますが、多くの場合、リスト内包表記を使用すると、コーディングが簡単かつ高速になります。

以下の表には、いくつかのリスト関数とメソッド、およびそれらの説明が含まれています。

組み込み関数

FUNCTION DESCRIPTION
ラウンド() 引数として渡された数値を指定された桁数に四捨五入し、浮動小数点値を返します。
最小() 指定されたリストの最小要素を返します
Max() 指定されたリストの最大の要素を返します
len() リストの長さを返します
列挙() この組み込み関数は反復可能な項目の値とインデックスの両方を生成するため、手動でカウントする必要はありません。
フィルター() リストの各要素が true かどうかをテストします
ラムダ リスト リテラルまたは関数の呼び出し引数内で、def (関数作成用) が構文的でない場所に出現できる式。
地図() 指定された関数を指定された反復可能オブジェクトの各項目に適用した後の結果のリストを返します。
蓄積() 引数に渡された特定の関数をすべてのリスト要素に適用すると、中間結果を含むリストが返されます。
和() リスト内のすべての数字の合計を返します
センチメートル() これは 1 つのリストを比較するために使用され、最初のリストが XNUMX 番目のリストより大きい場合は XNUMX を返します。
インサート リストの特定の位置に要素を挿入します

リストメソッド

FUNCTION DESCRIPTION
Append() 新しい項目をリストの最後に追加します
クリア() リストからすべての項目を削除します
コピー() 元のリストのコピーを返します
拡張する() リストの最後に多くの項目を追加する
カウント() リスト内の特定の項目の出現数を返します。
索引() リストの特定の要素のインデックスを返します。
ポップ() 特定のインデックスにあるリストから項目を削除します (位置ごとに削除)
削除する() 指定した項目をリストから削除します(値による削除)
Reverse() リストの要素の順序を逆にするインプレース反転メソッド

よくあるご質問

リストは、整数、文字列、浮動小数点数などのさまざまなオブジェクトを格納できる、角括弧で記述された可変で順序付けられたコンテナです。 Python配列の ' 版。

サブリストを取得するには、list[start:end] を使用します。スライスは上限のみを使用するため、終了インデックスは含まれません。start または end を省略すると、リストの境界が使用されます。

末尾に項目を追加するには append() 関数を、複数追加するには extend() 関数を使用します。項目を削除するには、値を指定して remove() 関数を使用するか、インデックスを指定して pop() 関数と del 関数を使用します。

list.sort() を呼び出すと、その場で昇順にソートされます。降順にソートする場合は reverse=True を、文字列を長さ順にソートする場合は key=len を渡してください。

リスト内包表記は、[x**2 for x in range(1, 10)] のように、1行で新しいリストを作成します。これにより、多くの for ループをより短く、高速で、読みやすいコードに置き換えることができます。

GitHub CopilotのようなAIアシスタントは、メソッドのリストを自動補完したり、forループをリスト内包表記に変換したり、平易な言葉による説明からソートやフィルタリングのコードを生成したりします。

はい。AIを活用したツールを使えば、ループを内包表記に自動的に変換したり、適切なリストメソッドを提案したり、非効率な操作を指摘したりして、リストコードの実行速度を向上させることができます。

リストは可変で角括弧を使用するため、その要素を変更できます。タプルは不変で丸括弧を使用するため、作成後に内容を変更することはできません。