web-dev-qa-db-ja.com

Pythonのセットとリストの違いは何ですか?

Pythonのセットとリストの唯一の違いは、ユニオン、インターセクト、差分、対称差分関数を使用して2つのセットを比較できるということですか?これらの関数を単純に適用できないのはなぜですか?リストはどのような状況でリストよりも便利ですか?

37
user1588869

大きな違いがあります。

  1. セットに重複を含めることはできません
  2. セットは順不同です
  3. セット内の要素を見つけるために、ハッシュルックアップが使用されます(これが、セットが順序付けられていない理由です)。これにより、リストに対して___contains___(in演算子)がセットに対してはるかに効率的になります。
  4. セットにはハッシュ可能なアイテムのみを含めることができます(#3を参照)。 set(([1],[2]))を試してみると、TypeErrorが得られます。

実際のアプリケーションでは、リストは並べ替えと順序付けが非常に便利ですが、セットは重複を避け、順序を気にしない場合に使用できます。

順序などを気にしない場合は、使用できることに注意してください

_new_set = myset.intersection(mylist)
_

setlistの共通部分を取得するため

73
mgilson

sets —一意の要素の順序なしコレクション

lists -順序付けられた要素のコレクション

setsを使用すると、intersectionuniondifferencesymmetric differenceなどの演算、つまり数学の集合論の演算を実行できます。セットはインデックス付けを許可せず、ハッシュテーブルに実装されます。

listsは実際には可変長配列であり、LISPスタイルのリンクリストではありません。リストでは、要素はインデックスによってアクセスされます。

7

設定

セットは、順序付けられておらずインデックスも付けられていないコレクションであり、重複は許可されていません。 Pythonでは、セットは中括弧で記述されます。

# example set
newset = {"one", "two", "three"}
  • インデックスを参照してセット内のアイテムにアクセスすることはできません
  • セットは変更可能です
  • 重複をチェックするのに便利です

リスト

リストは、順序付けられて変更可能なコレクションです。 In Pythonリストは角括弧で記述されています。

# example list
newlist =["one", "two", "three"]
  • インデックス番号を参照してリスト項目にアクセスします
  • リストは変更可能です。
4
P.singh

いくつかの違いは次のとおりです。

  1. リストは2次元にすることができますが、セットはできません。
  2. リストは順序付けられているので(IE。シリアル番号があります)、リストの実行は比較的遅く、セットは高速です。
  3. pythonのリストは、Javaまたはc。
  4. セットを印刷すると、ほとんど常に異なる出力シーケンスが提供されます。
  5. セットはhash functionを使用して要素を検索しますが、リストは配列です。したがって、Set内の要素の検索は、list内の要素よりも高速です。
3
BlackBeard

Setは、個別の要素のコレクションを表します。 Pythonでは、セットは主に次の2つの理由で使用されます(Book:Data Science from Scratch、Joel Gruce):

  1. より高速な操作:inは、セットに対する非常に高速な操作です。要素の大きなコレクションがあり、メンバーシップテストを実行する場合、その場合はリストの代わりにsetを使用するのが適切です。

  2. コレクション内の個別のアイテムを見つけるため。プログラマは、dictやlistよりもセットの使用頻度をはるかに低くしています。

3
Sayali Sonawane