编程与算法中的端点问题(linspace(a, b, n),endpoint)

  • 左闭右开,[0, n) ⇒ [0, n-1],共 n 个元素;

1. 列表长与编号

列表(seq,也可以是数组等线性结构)的长度要比末尾元素的编号多 1,比如一个列表内含有 5 个元素,最后一个元素的编号是 4,5 = 4+1

i = 0
while i < n:
    ... 

再者,想要获得末尾的元素:seq[n-1]。seq[n] 访问越界;

2. 常见算法的端点

  • 素数判断:

    sqrt_number = sqrt(number)
    for i in xrange(2, int(sqrt_number)+1):

3. linspace(a, b, n)

n 表示最后得到的序列的元素个数(包含端点),a、b 则是首尾的端点,则区间的长度为 b-a,又该区间内小间隔的数目为 n-1,则每一段小区间的长度为:

ban1

则最终得到的 n 个点分别是:a,a+(b-a)/(n-1),a+2(b-a)/(n-1),…,a+(b-a)/(n-1)*(n-1) = b;

也即:

{a+kban1}0kn1

np.linspace() ⇒ 默认是包含左右两个端点的,也即关键字参数 endpoint=True,如果将其 endpoint=False,便不再包含又端点。

np.linspace(0, 5, 10)                   (5-0)/(10-1) ⇒ 区间长度
np.linspace(0, 5, 10, endpoint)         (5-0)/10 ⇒ 区间长度
原文地址:https://www.cnblogs.com/mtcnn/p/9424140.html