回答:
はい、Pythonリスト内の要素の順序は永続的です。
def fn_1(): lst = [] lst.append(1) lst.append(2) return lstとdef fn_2(): print(fn_1())順序が)にかかわらず、常に何回か、どこかつて私は(fn_1を使用するのと同じでしょうか?
つまり、注文は保持されます。長い間:
一般に、次の定義はリストなどのオブジェクトに常に適用されます。
リストには、重複した要素を含む、明示的にそうするように作られていない限り、一般的に変化していないことを定義された順序を持つことができます要素のコレクションです。スタックとキューはどちらもリストのタイプであり、要素を追加および削除するための特定の(多くの場合は制限されている)動作を提供します(スタックはLIFO、キューはFIFOです)。リストは物事のリストを実際に表現したものです。文字列は文字のリストと考えることができます。これは、順序が重要("abc" != "bca")であり、文字列の内容の重複が確実に許可されるためです("aaa"存在する可能性があるおよび!= "a")。
セットには、重複を含めることはできません要素のコレクションで、または時間にわたって変化しない場合があり非明確な順序を持っています。セットは物事のリストを表すものではなく、物事の特定の選択の範囲を説明するものです。セットの内部構造、その要素が相互にどのように格納されるかは、通常、有用な情報を伝えることを意図していません。一部の実装では、セットは常に内部的にソートされます。その他の場合、順序は単純に定義されていません(通常はハッシュ関数によって異なります)。
コレクションは、(通常は可変の)数の他のオブジェクトを格納するために使用されるオブジェクトを指す総称です。リストとセットはどちらもコレクションの一種です。タプルと配列は通常、コレクションとは見なされません。一部の言語では、マップ(異なるオブジェクト間の関連付けを記述するコンテナー)もコレクションの一種と見なされます。
この命名方式は、Python、C ++、Java、C#、Lispなど、私が知っているすべてのプログラミング言語に当てはまります(リストを順序どおりにしないと、特に壊滅的になります)。これが当てはまらない場所を誰かが知っている場合は、そのように言ってください。答えを編集します。特定の実装では、これらのオブジェクトに他の名前を使用する場合があることに注意してください。、C ++のベクトルやALGOL 68のフレックス(両方のリスト。厳密には、フレックスは単なるサイズ変更可能な配列です)。
方法の詳細により、ケースに混乱が残っている場合 +ここで記号は、リストの順序が重要であることを知ってください。そうでないと信じる十分な理由がない限り、リストの操作は常に安全に順序を維持すると想定できます。 。この場合、+記号は文字列(実際には文字のリストにすぎません)の場合とほぼ同じように動作します。リストのコンテンツを取得して、別のコンテンツの背後に配置します。
私たちが持っている場合
list1 = [0, 1, 2, 3, 4]
list2 = [5, 6, 7, 8, 9]
その後
list1 + list2
と同じです
[0, 1, 2, 3, 4] + [5, 6, 7, 8, 9]
どちらが評価する
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
とても似ている
"abdcde" + "fghijk"
生産する
"abdcdefghijk"
「セット」と「リスト」を混同している。セットは順序を保証しませんが、リストは保証します。
セットは中括弧を使用して宣言されます:{}。対照的に、リストは角括弧を使用して宣言されます[]。
mySet = {a, b, c, c}
順序は保証されませんが、リストは次のことを保証します。
myList = [a, b, c]
たとえば、エントリが変更される可能性があるかどうかで、たとえば2が別の数になる場合があります。Pythonでは整数は不変です。つまり、整数は作成後は変更できないため、ここで安心できます。
ただし、Pythonのすべてが不変というわけではありません。たとえば、リストは変更可能です---作成後に変更できます。たとえば、リストのリストがある場合
>>> a = [[1], [2], [3]]
>>> a[0].append(7)
>>> a
[[1, 7], [2], [3]]
ここで、a(追加した7した)た。注意を怠ると、物事をシャッフルし、ここで予期しない事態が発生することを想像できます(実際、これは、何らかの方法でPythonでプログラミングを開始するときに誰でも起こります。このサイトを検索して、「ループしながらリストを変更する」数十の例をご覧ください)。
また、指摘する価値があるx = x + [a]とx.append(a)同じものではありません。2つ目は変化xし、1つ目は新しいリストを作成してに割り当てxます。違いを確認するには、それぞれにy = x何かを追加する前に設定してみてx、2つの違いを確認してくださいy。