Python 强制范围过零的通用算法

Python 强制范围过零的通用算法,python,Python,我正在寻找一种通用算法,给定范围值start和end将生成一个数字列表,但数字必须经过零。。 以下是我当前的代码: end = 78 start = -1 * end step_size = 16 numbers = range(start, end+step_size, step_size) $ numbers Out[90]: [-78, -62, -46, -30, -14, 2, 18, 34, 50, 66, 82] 在这个特殊的例子中,我会从每个数字中减去2,这样这些数字就有一个

我正在寻找一种通用算法,给定范围值
start
end
将生成一个数字列表,但数字必须经过零。。 以下是我当前的代码:

end = 78
start = -1 * end
step_size = 16
numbers = range(start, end+step_size, step_size)

$ numbers
Out[90]: [-78, -62, -46, -30, -14, 2, 18, 34, 50, 66, 82]

在这个特殊的例子中,我会从每个数字中减去2,这样这些数字就有一个零值。但我怎样才能更一般地做到这一点呢?我这样做是为了计算一个图形的y-tic位置,因此我希望它们通过0一次。

找到列表绝对值的最小值,从列表的每个元素中减去它。这不是最理想的解决方案,但它又快又脏,而且有效:

(我使用numpy是因为它比列表更有效,如果您使用的是matplotlib,则可能有numpy)


找到列表绝对值的最小值,从列表的每个元素中减去它。这不是最理想的解决方案,但它又快又脏,而且有效:

(我使用numpy是因为它比列表更有效,如果您使用的是matplotlib,则可能有numpy)


start%step\u size
应为所需的偏移量:

>>> end = 78
>>> start = -1 * end
>>> step_size = 16
>>> range(start-(start%step_size), end+step_size, step_size)
[-80, -64, -48, -32, -16, 0, 16, 32, 48, 64, 80]
示例:

def get_range(end, step_size):
    start = -1 * end
    return range(start-(start%step_size), end+step_size, step_size)

>>> get_range(23, 4)
[-24, -20, -16, -12, -8, -4, 0, 4, 8, 12, 16, 20, 24]
>>> get_range(19, 11)
[-22, -11, 0, 11, 22]
>>> get_range(103, 32)
[-128, -96, -64, -32, 0, 32, 64, 96, 128]

start%step\u size
应为所需的偏移量:

>>> end = 78
>>> start = -1 * end
>>> step_size = 16
>>> range(start-(start%step_size), end+step_size, step_size)
[-80, -64, -48, -32, -16, 0, 16, 32, 48, 64, 80]
示例:

def get_range(end, step_size):
    start = -1 * end
    return range(start-(start%step_size), end+step_size, step_size)

>>> get_range(23, 4)
[-24, -20, -16, -12, -8, -4, 0, 4, 8, 12, 16, 20, 24]
>>> get_range(19, 11)
[-22, -11, 0, 11, 22]
>>> get_range(103, 32)
[-128, -96, -64, -32, 0, 32, 64, 96, 128]

不要从一个列表开始,然后让它归零,从一个零开始,然后上下。不要从一个列表开始,然后让它归零,从一个零开始,然后上下。