作爲一個側面項目和C++ 11實踐,我正在努力研究Numpy靜態的一個小型n維數組庫。我打算主要遵循Numpy慣例,但在切片的情況下,我正在考慮選擇不同的東西。避免Python風格切片的缺陷
的問題是,範圍的最後一個元素時,使用索引負變量,並且也向後遍歷時,總是無法訪問。例如,array[x:y]
不能包含負數y
的最後一個元素。編輯:我不知道通過None
正是在Python中解決了這個問題。這個問題雖然仍然存在,但它似乎是我想要避免的那種特別解決方案,並且它在C++中的對應方法會很麻煩。
我已經考慮了三種主要的選項:
使用所包括的範圍,如在Haskell。畢竟,Haskellers並沒有受到特別的困擾。這雖然與Python體驗有很大的偏差。
禁止負向索引。這在可用性方面並沒有太大的改進,從絕對需要計算最終索引時,從大小上進行簡單的減法就足夠了。
片相同的方式,在Python。所提到的問題很少出現在真實的代碼中,人們可以在它出現時很容易地識別和規避它。
我目前傾向於選項一。對此事有何看法?
負指數問題與包含/排除端點問題有關嗎? – BrenBarn
這可能會被標記爲主觀。 – 2rs2ts
「範圍的最後一個元素總是無法訪問」 - 您是否將這作爲您的代碼的要求? Python切片不會有這樣一個愚蠢的限制。 – tdelaney