2014-04-03 40 views
0

我有幾百值,看起來像這樣的列表:在2D Python列表訪問行計算值之間的距離

(0.0021265099091875685, 0.0017700721644805513) (0.0026319917728469086, 0.002632415013842871)

我想計算每行之間的歐氏距離。

我計劃在計算它的方式是這樣的:

sqrt(0.0021265099091875685 - 0.0026319917728469086)^2 + (0.0017700721644805513 - 0.002632415013842871)^2 

我無法工作了我怎麼能爲了做這些計算訪問每個值。如果有人對此有任何想法,這將是非常有益的。謝謝

編輯:我拉從MySQL數據庫的數據。起初我有兩個列表,在打印時,列表如下所示:

0.00212650990919 0.00263199177285 0.00332920813651 0.00268428300012 0.00245768768193

然後我做這個創造了一個新的列表:

someList = zip(list1 , list2) 

這給了我輸出我有以上。

+0

通過每一行之間,你的意思是,對於一個列表在計算三行時,你想計算d(1,2),d(2,3)是否正確?不是'd(1,2),d(2,3),d(1,3)'? –

+0

是的,你是對的,我想用前者,而不是後者。 – user3157916

+0

所以,我還不清楚。我們是在討論兩個列表:'x_values = [1.0,2.3,4.5,...]'和'y_values = [3.4,1.1,0.3,...]'成爲'someList = [(1.0,3.4 ),(2.3,1.1),(4.5,0.3),...]'當'zip's? –

回答

0

您可以使用壓縮:

l1=(0.0021265099091875685, 0.0017700721644805513) 
l2=(0.0026319917728469086, 0.002632415013842871) 
result=[(x-y)**(1/2) for x,y in zip(l1,l2)] 
0

我不知道你的數據是如何將是從你的問題。我假設你的數據作爲:

data = [ 
[(0.0021265099091875685, 0.0017700721644805513), (0.0026319917728469086, 0.002632415013842871)], 
[(0.0021265099091875685, 0.0017700721644805513), (0.0026319917728469086, 0.002632415013842871)], 
[(point-one), (point-two)], 
... 
] 

這將然後給你所需要的:

[pow(sqrt(item[1][0] - item[0][0]), 2) + pow((item[1][1] - item[0][1]), 2) for item in data] 
0

假設你的名單看起來是這樣的:

lst = [ ((x1,y1),(x2,y2)), ... ] 

那麼你可以只做:

import math 
distances = [ math.sqrt((p1[0]-p2[0])**2.0 + (p1[1]-p2[1])**2.0) for p1, p2 in lst ] 
0

假設你的列表看起來像s omething像這樣...

xyz = [(0.0021265099091875685, 0.0017700721644805513), (0.0026319917728469086, 0.002632415013842871), ...] 

你也可以做......

For item in xyz: 
    first_num = item[0] 
    second_num = item[1] 
0

假設你的數據看起來是這樣的:

points = [ 
    (a, b), 
    (c, d), 
    (e, f), 
    ... 
] 

這時,你可能做這樣的事情:

d = lambda x, y: ((y[0] - x[0]) ** 2 + (y[1] - x[1]) ** 2) ** 0.5 
distances = [d(*pair) for pair in zip(points, points[1:])] 
+0

我的數據沒有以這種方式實際定義。我有兩個列表,每個列表都有幾百個浮點值。我將這兩個列表合併到一個列表中,如下所示: someList = zip(list1,list2) – user3157916

+0

@ user3157916:因此,一旦合併列表,使用zip,它們將看起來像我擁有的​​列表? –

+0

啊!傻我。那裏有一個大腦放屁的位。感謝您的幫助,這是我需要的! – user3157916