53

Pythonのセットとリストの唯一の違いは、和、交差、差、対称差関数を使用して2つのセットを比較できるという事実ですか?これらの関数を単にリストに適用できないのはなぜですか?どのような状況で、セットはリストよりも便利ですか?

4

7 に答える 7

85

大きな違いがあります。

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

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

また、注文などを気にしない場合は、

new_set = myset.intersection(mylist)

setaとaの間の交点を取得しlistます。

于 2012-09-10T15:11:41.130 に答える
12

sets—ユニークな要素の順序付けられていないコレクション

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

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

listsLispスタイルのリンクリストではなく、実際には可変長配列です。リストでは、要素はインデックスによってアクセスされます。

于 2012-09-10T15:12:30.420 に答える
5

その他の違いは次のとおりです。

  1. リストは 2 次元にすることができますが、セットはできません。
  2. リストは順序付けられているため (つまり、シリアル番号があります)、リストの実行は比較的遅く、セットは高速です。
  3. Python のリストは、Java や C の Array のようなものです。
  4. セットを印刷すると、ほとんどの場合、異なる順序の出力が提供されます。
  5. リストは配列ですが、セットはhash function要素を見つけるために使用します。したがって、 での要素の検索は での検索Setよりも高速ですlist
于 2016-08-31T03:56:02.463 に答える