Pythonのセットとリストの唯一の違いは、和、交差、差、対称差関数を使用して2つのセットを比較できるという事実ですか?これらの関数を単にリストに適用できないのはなぜですか?どのような状況で、セットはリストよりも便利ですか?
質問する
90467 次
7 に答える
85
大きな違いがあります。
- セットに重複を含めることはできません
- セットは順序付けられていません
- セット内の要素を見つけるために、ハッシュルックアップが使用されます(これがセットが順序付けされていない理由です)。これにより、
__contains__
(in
演算子)はリストよりもセットの方がはるかに効率的です。 - セットには、ハッシュ可能なアイテムのみを含めることができます(#3を参照)。試してみると:
set(([1],[2]))
が得られますTypeError
。
実際のアプリケーションでは、リストは並べ替えと順序付けが非常に便利ですが、セットは重複が不要で順序を気にしない場合に使用すると便利です。
また、注文などを気にしない場合は、
new_set = myset.intersection(mylist)
set
aとaの間の交点を取得しlist
ます。
于 2012-09-10T15:11:41.130 に答える
5
その他の違いは次のとおりです。
- リストは 2 次元にすることができますが、セットはできません。
- リストは順序付けられているため (つまり、シリアル番号があります)、リストの実行は比較的遅く、セットは高速です。
- Python のリストは、Java や C の Array のようなものです。
- セットを印刷すると、ほとんどの場合、異なる順序の出力が提供されます。
- リストは配列ですが、セットは
hash function
要素を見つけるために使用します。したがって、 での要素の検索は での検索Set
よりも高速ですlist
。
于 2016-08-31T03:56:02.463 に答える