D*******a 发帖数: 207 | 1 R里面,假定X是vector,则X[1:5]得到vector c(X[1],X[2],...,X[5]).
python里面,假定X是list,则X[0:5]得到list [X[0],...,X[4]].
R里面,1:5就表示vector c(1,2,3,4,5).
python里面,0:5却是syntax error,想要list,则需要用range(0,5).
这是为何?从consistent的角度来说,0:5不应该是syntax error. | i**e 发帖数: 6810 | 2 不同语言把不同feature用syntax或者function来实现,
应该各有各的考虑,问题不太大吧。 | d****e 发帖数: 251 | 3 R什么的沿用的matlab格式吧。
这是python的哲学(>>>import this), explicit is better than implicit.
1:5这种syntax sugar不能清楚表达代码意图。太容易和slicing搞混了。
【在 D*******a 的大作中提到】 : R里面,假定X是vector,则X[1:5]得到vector c(X[1],X[2],...,X[5]). : python里面,假定X是list,则X[0:5]得到list [X[0],...,X[4]]. : R里面,1:5就表示vector c(1,2,3,4,5). : python里面,0:5却是syntax error,想要list,则需要用range(0,5). : 这是为何?从consistent的角度来说,0:5不应该是syntax error.
| r****t 发帖数: 10904 | 4 作为一个 programming language, X[0:5] 要按照 X[range(5)] 实现的话,使用了不
必要的资源。
[] operator calls __get_slice__, 0:5 解释成 slice(0,5), 如果你是 range(0,
1000000), 你会发现和 slice(0,1000000) 是有天壤之别的。
【在 D*******a 的大作中提到】 : R里面,假定X是vector,则X[1:5]得到vector c(X[1],X[2],...,X[5]). : python里面,假定X是list,则X[0:5]得到list [X[0],...,X[4]]. : R里面,1:5就表示vector c(1,2,3,4,5). : python里面,0:5却是syntax error,想要list,则需要用range(0,5). : 这是为何?从consistent的角度来说,0:5不应该是syntax error.
|
|