2013-11-09 69 views
0

我的元組檢查列表中的截斷元組值?

In [142]: mylist=[(0.0, 0.0), (0.0, 0.769883), (-0.01435677, 1.7573411), (-0.3796871, -0.40361387), (-0.27704585, -1.7006601), (-0.26976547, -2.6480746), (-0.27020714, -3.0438666), (-0.2759932, -3.638946), (-0.28580084, -4.182567), (-0.29590216, -4.5594716), (-0.31486654, -5.1321993), (-0.3386181, -5.701327), (-0.37045696, -6.34038), (-0.40544215, -6.94697), (-0.45580167, -7.711907), (-0.48936173, -8.165736), (-0.52177864, -8.558438), (-0.5721365, -9.112968), (-0.6326114, -9.723627), (-0.6764244, -10.130929), (-0.7162372, -10.471702), (-0.73864824, -11.2733345), (-0.6795322, -11.688038), (-0.6065086, -12.021755), (-0.52627456, -12.4043045), (-0.42850703, -13.172687), (-0.2827803, -15.462493), (-0.25139827, -16.006815), (-0.21802832, -16.84582)] 

我要檢查這個元組(-0.405442, -6.94697)是否mylist與否的列表。

(-0.40544215, -6.94697)在列表中,如下圖所示:

In [143]: mylist[13] 
Out[143]: (-0.40544215, -6.94697) 

但我查詢的元組已經有點截斷(-0.405442, -6.94697)

我該如何讓Python告訴我(-0.405442, -6.94697)是在mylist(忽略截斷)?

+7

'-0.40544215!= -0.405442' –

+0

@PauloBu對我感到羞恥。非常抱歉!但我從來沒有截斷或者說,爲什麼要錯過兩位十進制 –

+0

我不能說,我沒有看到任何更多的代碼,就我而言,當你特別提出要求時,我擔心你是一個固定的代碼:'(-0.405442, - 6.94697)在mylist'上的解釋器。 –

回答

1

(-0.405442, -6.94697)不在您的列表上。 (-0.40544215, -6.94697)是。

如果要檢查,如果元組是在你的名單與6個十進制數字的準確性,試試這個

(-0.405442, -6.94697) in [(round(i[0], 6), round(i[1], 6)) for i in mylist] 

如果你要檢查這個多次,你最好創建一個新的列表,雖然:

mynewlist = [(round(i[0], 6), round(i[1], 6)) for i in mylist] 
(-0.405442, -6.94697) in mynewlist 
+0

(-0.405442,-6.94697)不在您的列表中。 (-0.405442,-6.94697)是。兩者都是一樣的你是什麼意思? – Mutant

+0

@Mutant:錯字,修正它 – jazzpi

0

因爲(-0.405442,-6.94697)不一樣(-0.40544215,-6.94697)

>>> mylist=[(0.0, 0.0), (0.0, 0.769883), (-0.01435677, 1.7573411), (-0.3796871, -0.40361387), (-0.27704585, -1.7006601), (-0.26976547, -2.6480746), (-0.27020714, -3.0438666), (-0.2759932, -3.638946), (-0.28580084, -4.182567), (-0.29590216, -4.5594716), (-0.31486654, -5.1321993), (-0.3386181, -5.701327), (-0.37045696, -6.34038), (-0.40544215, -6.94697), (-0.45580167, -7.711907), (-0.48936173, -8.165736), (-0.52177864, -8.558438), (-0.5721365, -9.112968), (-0.6326114, -9.723627), (-0.6764244, -10.130929), (-0.7162372, -10.471702), (-0.73864824, -11.2733345), (-0.6795322, -11.688038), (-0.6065086, -12.021755), (-0.52627456, -12.4043045), (-0.42850703, -13.172687), (-0.2827803, -15.462493), (-0.25139827, -16.006815), (-0.21802832, -16.84582)] 
>>> (-0.40544215, -6.94697) in mylist 
True 

*除非其有問題錯字。

+0

對不起!沒有錯字。現在我開始想知道爲什麼有一個截斷。我從來沒有這樣做。 –

0

如果你想找到使用理解近似匹配,你可以只檢查數量是通過檢查,如果發現你想要的號碼減去數的絕對值是「足夠接近」所需的值例如,小於某個限制;

>>> [(x,y) for (x,y) in mylist if abs(-0.405442-x)<0.001 and abs(-6.94697-y)<0.001] 

[(-0.40544215, -6.94697)] 

...將找到值在所需值的0.001以內。