2017-10-19 82 views
-3

我需要乘以不同的列表來計算不規則多邊形的面積。Python中的列表乘法運算

X = [1,1,1,1,1,1] 
Y = [5,4,3,2,1,0] 

這意味着從點1是(1,5)即座標,爲點2是(1,4)等。要計算面積,我需要乘以X[i] * Y[i+1],這等於1 * 4, 1 * 3, 1 * 2,並排除最後一個乘法,例如1 * empty

我該怎麼做?

+5

「我該怎麼做?」你有什麼嘗試? – DeepSpace

+3

你的輸出應該是什麼樣子?你有什麼嘗試?請[編輯]問題。 – Tgsmith61591

+0

有了地圖功能和很好的切片清單,應該很容易做 – Axnyff

回答

4

所以,在我的理解,你需要XY,其中Y第一個元素被排除之間的滯後,以及X最後一個元素被排除在外。換句話說,你需要的東西,如:

[(1, 4), (1, 3), (1, 2), (1, 1), (1, 0)] 

您可以通過產生上述:

zipped = zip(X[:-1], Y[1:]) 

,你可以計算每對的產品,像這樣:

[a * b for a, b in zipped] 

中當然,如果XY是numpy陣列,您可以做得更高效:

>>> X[:-1] * Y[1:] 
array([4, 3, 2, 1, 0]) 
+1

說實話,你甚至不需要切分X.'zip(X,Y [1:])'將會提供相同的輸出,因爲'zip'消耗最短的迭代時會停止。不切片X保存一些內存。 – DeepSpace

2

喜歡的東西

[x * y for x, y in zip(X, Y[1:])] 

會做到這一點。但你真的應該使用Numpy來做任何不重要的事情。

+0

我不能單獨使用numpy「Python」,我知道用numpy這很容易。謝謝! – Daniel