2017-04-07 2 views
3

나는 튜플의 목록이 있습니다내가 튜플의 목록을 가지고 튜플에있는 문자열 중 하나의 하나 개의 인스턴스가 목록을 만들고 싶어

[(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')] 

없음 3, 4, c 또는 시력에 d!