為什麼區間個切片要忽略最後乙個元素

2021-10-01 06:14:22 字數 1060 閱讀 9672

這個問題在fluent python提到,同時引了計算機edsger w. dijkstra的解釋。簡要記錄如下

當我們想取出2,3,…12這個區間時,共有四種表示式可選:

a) 2 ≤ i < 13

b) 1 < i ≤ 12

c) 2 ≤ i ≤ 12

d) 1 < i < 13

其中a)、b)表示式可以從兩端相減得到區間長度,這是其中乙個優點。

但是並不是決定性因素。重新考慮上下界問題。

如果不包含下界情況,那麼如果想得到乙個自然數數列,必須引入非自然數-1,表示式如下:

-1 < i < n

that is ugly(原文)

包含下界的前提下,如果再包含上界,那麼我們如果想通過收縮創造乙個空數列就非常彆扭。上界小於下界???that is ugly(原文)

所以a)是區間表示式的首選,即[a, b)。

這在python中也是慣用方式:

a =[1

,2,3

]print

(a[0:3

])# 全部元素

print

(a[0:1

])#第乙個元素index=0

print

(a[0:0

])#空列表

但是發現python中有個庫存在不遵守約定的情況

import random

random.randint(0,

1)#產出0或者1, [a, b]

import numpy as np

np.random.randint(0,

1)# 只能產出0, [a, b)

參考資料:

1、流暢的python chapter2.4.1

2、edsger w. dijkstra的解釋–why numbering should start at zero

為什麼要找到乙個好的特徵?

好,話不多說,今天讓我們來一起分享下怎麼樣來去選擇乙個好的特徵,並且當我們區分出好的特徵的時候,好的特徵意味著什麼。在這一篇文章中,我們將會用到機器學習的分類器來作為貫穿整篇文章的例子,因為分類器只有在我們提供了好的特徵以後才可以為我們的發揮出自己的好的效果,這也意味著找到好特徵是機器學習能夠學好的...

我為什麼要開發乙個 MixPHP 框架

最近業餘時間一直在開發expressphp的第二個版本 mixphp,今天下班想起之前乙個面試官的問題 你為什麼還要再造乙個輪子呢?仔細回想,第乙個版本,現在想來確實 炫技 的成份比較多,現在推翻第一版,又重構乙個所謂的 高效能php框架 這東西又不賺錢,我到底為了啥?其實,寫程式和寫詩有很多相似之...

php 為什麼new乙個物件後面要加乙個反斜槓

通俗點解釋就是 指定物件具體的型別。在沒有引入將類檔案引入當前檔案時,php無法知曉你需要使用的是什麼類 相同命名空間的類檔案除外 所以 為了防止 存在多個同名類檔案,php需要你指定具體的類檔案,帶反斜槓其實就是 命名空間 路徑的表示。php反斜線做命名空間分隔符 因為使用了php的命名空間,演示...