#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 Это именно то, что я искал. Большое спасибо. Я просто жду каких-то других альтернативных ответов