сравнить номера списка в Python - PullRequest
0 голосов
/ 21 февраля 2019

у нас есть список с именем 'a':

a =  [0.16783458583826283,
 0.522388408702815,
 0.3898707561845427,
 0.11718535975847377,
 2.339774725582763]

я хочу вычислить минимальное расстояние числа eatch в 'a', поэтому я написал:

cu = float('inf')
for i in a:
    for ii in a:
        w = abs(i-ii)
        if w < cu and not w is 0.0:
            cu = w
print(cu)

но яполучить:

cu = 0.0

что с ним не так ???

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

В качестве альтернативы вы можете использовать:

from itertools import combinations, starmap
from operator import sub, abs

a = [1, 2, 3]

dist = starmap(sub, combinations(a, 2))
min(map(abs, dist))
# 1
0 голосов
/ 21 февраля 2019

Используйте != вместо not is:

a =  [0.16783458583826283,
 0.522388408702815,
 0.3898707561845427,
 0.11718535975847377,
 2.339774725582763]
cu = float('inf')
for i in a:
    for ii in a:
        w = abs(i-ii)
        if w < cu and  w != 0.0:    # other opts: w > 0, just 0 < w < cu
            cu = w
print(cu)

ВЫХОД :

0.050649226079789056
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...