|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手。
已经有人在Twitter上问我为何Python利用以0为首位的数组索引法(0-based),而且还给我了一个相干优异文章的链接。这让我想起很多旧事:Python的前身之一,ABC言语利用的是以1为首位的数组索引体例(1-based),而对Python有着伟大影响的C言语则利用的是0-based。我初期开辟的程序言语(Algol、Fortran、Pascal)有的利用1-based,有的则对照天真。我以为切片语法是我做出这个决意的缘故原由之一。
我们先来看看切片语法的利用吧。它最多见的利用应当是“切出数组的前n位”和“切出数组第i位后的n位”(前者是后者在i==肇端位下的惯例)。假如我们不必要利用丢脸的+1或-1抵偿体例,那末代码就会美妙很多。
经由过程利用0-based索引法,Python的半开区间和缺省婚配区间都很美妙,如:a[:n]和a[i:i+n];前者是a[0:n]的省略写法。
在1-based索引法下,假如你想用a[:n]来暗示切出前n个元素的话,你只能选择在切片语法中利用切片肇端位和切片长度2个参数,大概闭区间的用法。利用1-based索引法,半开区间切片语法就显得不敷美妙。一样地,利用闭区间切片语法的话,你只能用a[i:i+n-1]来暗示从第i位取n个元素。以是假如利用1-based索引法的话,利用切片长度更符合。你能够写成a[i:n]。现实上,ABC言语就是如许的——它用了一种特别的用法,写为a@i|n。(参考http://homepages.cwi.nl/~steven/abc/qr.html#EXPRESSIONS)
可是index:length的用法合适别的情形吗?厚道说,我不太记得了,但我想我事先切实其实很喜好它美妙的半开区间语法。出格是两个切片操纵地位相邻而且第一个切片操纵的尽头索引就是第二个切片的出发点索引的时分,它的写法其实是太大度了。好比,你想以i,j两点来切分一个数组的话,它们将会是a[:i]、a[i:j]、和a[j:]。
这就是Python利用0-based索引法的缘故原由。
Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手。 |
|