import numpy as np
print("--------------list-------------------")
a = [i for i in range(10)]
print(len(a))
print(a)
print("--------------list分割--------------------")
print(a[0:3])
print(a[3:10])
print(a[-5:])
print("--------------array-------------------")
b = np.arange(10)
print(len(b))
print(b)
print("--------------array分割--------------------")
根據以上的實驗得出結論python中的有關下標的結構都滿足左閉右開原則。那麼為什麼要遵循左閉右開原則呢?
1、因為在計算機硬體中迭代器對比較大小的運算很麻煩,有些時候兩個位址都無法比較大小。但是比較是否相等就會簡單的多,比如我要 range(10) 這時候只需判斷從0開始每次加一,直到等於10的時候結束迴圈。
其實程式裡使用左閉右開的原因是:考慮乙個區間[0, n], 如果我需要遍歷這個區間,需要迭代器支援比較操作。
即:i = 0;while (i <= n) do
而很多抽象的迭代器是無法來比較大小的,比如二叉樹裡指向乙個節點的指標。而如果使用左閉右開區間[0, n),我們遍歷這個區間只需要迭代器支援比較相等操作就可以了。即:i = 0;while (i != n) do
2、比較一下下面三種劃分實數的方案
[0, 1] (1, 2) [2, 3]…
(0, 1) [1, 2] (2, 3)…
[0, 1) [1, 2) [2, 3)…
顯然半閉半開劃分方案最美,所有區間包含的元素「一樣多」。
半閉半開的原則中,因為人們的習慣通常都是從左向右讀資料,所以兩者相比之下左閉右開更自然
python數值型函式並不都是左閉右開原則
str1 a000lghh str1 0 2 a0 for i in range 0,2 print i 0 1 list索引 左閉右開 name python語言程式設計 name 2 2 syntaxerror invalid character in identifier name 2 2 t...
二分查詢的左閉右開和左閉右閉寫法中各種小細節深究
lower bound查詢的是公升序序列中的第乙個出現target的pos,區間應從右向左收縮。upper bound查詢的是公升序序列中的最後乙個出現target的pos,區間應從左向右收縮。主迴圈判斷本質目的是為了確保整個區間能夠被檢索到。int lower bound vector nums,...
L14 Python為什麼要用左閉右開
表示 1,2,3,9 這樣乙個序列,有四種方法 方法一和方法二,他們邊界之間的差正好等於序列的長度。方法一和方法二,在這兩種表示方法中,如果我們觀察兩個相鄰的序列,那麼其中乙個序列的上限正好等於另乙個的下限。自然數是有最小值的 0 如果像第二種和第四種那樣,在下界採用 那麼當我們想表示乙個從0開始的...