2017-04-07 13 views
3

に文字列のいずれかのインスタンスを1つだけ持っているリストを作りたい:私はタプルのリストを持っていると私はタプルのリストを持っているタプル

[(1, 'Twilight Sparkle', 2, 'Fluttershy'), (1, 'Twilight Sparkle', 3, 
'Applejack'), (1, 'Twilight Sparkle', 4, 'Pinkie Pie'), (1, 'Twilight 
Sparkle', 5, 'Rarity'), (1, 'Twilight Sparkle', 6, 'Rainbow Dash'), 
(1, 'Twilight Sparkle', 7, 'Princess Celestia'), (1, 'Twilight 
Sparkle', 8, 'Princess Luna'), (2, 'Fluttershy', 3, 'Applejack'), (2, 
'Fluttershy', 4, 'Pinkie Pie'), (2, 'Fluttershy', 5, 'Rarity'), (2, 
'Fluttershy', 6, 'Rainbow Dash'), (2, 'Fluttershy', 7, 'Princess 
Celestia'), (2, 'Fluttershy', 8, 'Princess Luna'), (3, 'Applejack', 4, 
'Pinkie Pie'), (3, 'Applejack', 5, 'Rarity'), (3, 'Applejack', 6, 
'Rainbow Dash'), (3, 'Applejack', 7, 'Princess Celestia'), (3, 
'Applejack', 8, 'Princess Luna'), (4, 'Pinkie Pie', 5, 'Rarity'), (4, 
'Pinkie Pie', 6, 'Rainbow Dash'), (4, 'Pinkie Pie', 7, 'Princess 
Celestia'), (4, 'Pinkie Pie', 8, 'Princess Luna'), (5, 'Rarity', 6, 
'Rainbow Dash'), (5, 'Rarity', 7, 'Princess Celestia'), (5, 'Rarity', 
8, 'Princess Luna'), (6, 'Rainbow Dash', 7, 'Princess Celestia'), (6, 
'Rainbow Dash', 8, 'Princess Luna'), (7, 'Princess Celestia', 8, 
'Princess Luna')] 

と私はからリストを作成したいです

[(1, 'Twilight Sparkle', 2, 'Fluttershy'), (3, 'Applejack', 4, 'Pinkie 
Pie'),(5, 'Rarity', 6, 'Rainbow Dash'), (7, 'Princess Celestia', 8, 
'Princess Luna')] 
+0

出力例は説明よりも制限が大きいことに注意してください。 –

答えて

2

あなたは既に使用されている要素のsetを保つことができる:唯一の文字列が表示される最初の時間を持っていることは、この例では、私はリストになりたいです。このコードは、所望の出力ではなく、あなたの問題の説明に対応していることを

data = [(1, 'Twilight Sparkle', 2, 'Fluttershy'), (1, 'Twilight Sparkle', 3, 'Applejack'), (1, 'Twilight Sparkle', 4, 'Pinkie Pie'), (1, 'Twilight Sparkle', 5, 'Rarity'), (1, 'Twilight Sparkle', 6, 'Rainbow Dash'), (1, 'Twilight Sparkle', 7, 'Princess Celestia'), (1, 'Twilight Sparkle', 8, 'Princess Luna'), (2, 'Fluttershy', 3, 'Applejack'), (2, 'Fluttershy', 4, 'Pinkie Pie'), (2, 'Fluttershy', 5, 'Rarity'), (2, 'Fluttershy', 6, 'Rainbow Dash'), (2, 'Fluttershy', 7, 'Princess Celestia'), (2, 'Fluttershy', 8, 'Princess Luna'), (3, 'Applejack', 4, 'Pinkie Pie'), (3, 'Applejack', 5, 'Rarity'), (3, 'Applejack', 6, 'Rainbow Dash'), (3, 'Applejack', 7, 'Princess Celestia'), (3, 'Applejack', 8, 'Princess Luna'), (4, 'Pinkie Pie', 5, 'Rarity'), (4, 'Pinkie Pie', 6, 'Rainbow Dash'), (4, 'Pinkie Pie', 7, 'Princess Celestia'), (4, 'Pinkie Pie', 8, 'Princess Luna'), (5, 'Rarity', 6, 'Rainbow Dash'), (5, 'Rarity', 7, 'Princess Celestia'), (5, 'Rarity', 8, 'Princess Luna'), (6, 'Rainbow Dash', 7, 'Princess Celestia'), (6, 'Rainbow Dash', 8, 'Princess Luna'), (7, 'Princess Celestia', 8, 'Princess Luna')] 

already_added = set() 
result = [] 

for quad in data: 
    if not any((x in already_added) for x in quad): 
     for x in quad: 
      already_added.add(x) 
     result.append(quad) 

print(result) 
# [(1, 'Twilight Sparkle', 2, 'Fluttershy'), (3, 'Applejack', 4, 'Pinkie Pie'), (5, 'Rarity', 6, 'Rainbow Dash'), (7, 'Princess Celestia', 8, 'Princess Luna')] 

注:要素のどれもが前に使用されていない場合にのみ、

は結果にタプルを追加します。この望ましい出力はより制限的であり、いくつかの要素は、既に見られた要素に常に結合されている場合、全く追加されません。以下の場合:

data = [(1, 'a', 2, 'b'), (1, 'a', 3, 'c'), (2, 'b', 4, 'd')] 

出力は次のようになります。

[(1, 'a', 2, 'b')] 

34cや視力のd

関連する問題