Как подсчитать различные пары (x,y) из набора 3-мерных кортежей

#python #set

Вопрос:

У меня есть набор, который содержит такие элементы, как

 (1,2,"r"), (1,2,"d"), (1,3,"p")
 

Меня интересует только количество различных пар (x,y), как в приведенном выше, это будет 2. Как я
могу рассчитать это с помощью python?

Комментарии:

1. Можете ли вы объяснить, как число различных пар выше равно 2?

2. (1,2) и (1,3) являются двумя различными парами.

3. Имеет ли значение порядок значений x и y в отношении различимости?

4. да, порядок имеет значение. Думайте об этом как о координатах с направлениями, и меня интересуют только отдельные позиции без направлений

Ответ №1:

Звучит так , как будто одной строки будет достаточно (предположим, что ваш набор является набором list tuples , на который ссылается имя переменной l ).:

 l = [YOUR LIST OF TUPLES]
len(set([t[:2] for t in l]))
 

ПРИМЕЧАНИЕ: вышеизложенное рассматривает пару (x,y) как отличную от (y,x) ; если (x,y) и (y,x) предполагается, что они будут рассматриваться как нечеткие, то используйте:

 len(set([frozenset(t[:2]) for t in l]))
 

Комментарии:

1. Будет более разумно полностью понять, о чем ОП спрашивает, прежде чем давать ответ.

2. @DanielHao Я думаю, что спецификация операции достаточно однозначна; для полноты я добавил вторую строку, которая трактует (x,y) и (y,x) как нечеткую.

3. Теперь лучше со 2-м нотами.

4. @JoshuaVoskamp Это именно то, что я искал. Большое спасибо. Я просто жду каких-то других альтернативных ответов