python中的細節 左閉右開原則

2021-08-19 17:51:37 字數 1138 閱讀 4129

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開始的...