2017-05-01 1 views
-1

すでにリスト/セットに(1,2,3,4)が存在すると仮定します。順序を除いて異なる要素を持たない別のタプル(3,4,2,1)を追加すると、追加されるべきではありません。タプルをリストに追加する、またはそのタプルの他の置換が既にリストに存在する場合にのみ、タプルを効率的に追加する

+1

タプルに繰り返し要素がない場合、それらを 'frozenset'sとして' set'に格納することができます。 – vaultah

+0

セットの場合、タプルのメンバーをあらかじめ並べ替えるハッシュ関数を提供することができます。もちろん、__cmp__またはeqのどちらかを再定義することができます。実際には不幸なハッシュではなく、衝突。このためにタプルは独自の型である必要があります。 –

答えて

0

あなたのタプルは、あなたのリストに関する限り注文はありません。 tupleの代わりにfrozensetを使用し、それらをsetに追加すると、固有のfrozensetsのリストが作成されます。後で要素の順序が重要な場合は、要素を再作成する必要があります。

+0

これは、後でタプルの要素を変更したいという点を除いて、良い解決策と思われます。そのため、私はフーチェセットを使用できません。 –

+0

あなたはいつもフロウゼアセットをリストに戻すことができます – user2722968

0
def add(list1, list2): 
    x = set(list1)^set(list2) 
    if(len(x)>0): 
     return list1+list2 
関連する問題