Получить уникальный элемент списка / кортежа с заданным условием в python - PullRequest
2 голосов
/ 14 мая 2009

Как мне получить элемент кортежа / списка с учетом условия в python? Это происходит довольно часто, и я ищу хороший-немного-питонический способ сделать это.

вот пример:

Рассмотрим кортеж, содержащий координаты 2D точек, например:

points = [[x1, y1],[x2, y2],[x3, y3], ...]

И я хотел бы получить точку , которая минимизирует евклидово расстояние при произвольной точке (скажем, [X, Y], например, моя точка зрения: она не содержится в списке!)

def dist(p1, p2):
    return sqrt((p2[0]-p1[0])**2+(p2[1]-p1[1])**2)
pointToCompare2 = [X, Y]

У кого-нибудь есть причудливый вкладыш (или нет) для этого? Спасибо!

Ответы [ 2 ]

11 голосов
/ 14 мая 2009
min(points, key=lambda x: dist(pointToCompare2, x))

мин - встроенная функция .

0 голосов
/ 21 июня 2013
v = [1,3,2,4,7,3,3,4,5,11]

def get_num_uniques(v):
    count = []
    dup = []
tmp = []
for i in v:
    if i not in count:
        count.append(i)
    else:
        dup.append(i)
        count.remove(i)
for j in count:
    if j not in dup:
        tmp.append(j)

return tmp

#Call the function
print get_num_uniques(v)
...