我有一些代码来创建列表编号范围列表。然而,我想要的是随着数字越来越高,列表范围越来越小。这是我目前的线性增长列表。
>>> a = []
>>> for i in xrange(0,100,5):
a.append([i,i+5])
>>> a
[[0, 5], [5, 10], [10, 15], [15, 20], [20, 25], [25, 30], [30, 35], [35, 40], [40, 45], [45, 50], [50, 55], [55, 60], [60, 65], [65, 70], [70, 75], [75, 80], [80, 85], [85, 90], [90, 95], [95, 100]]
我想要一个增长率下降的列表,如对数函数。我不确定如何使用python实现这一点。一个列表末尾的数字必须等于下一个列表的开头,数字只能是整数。谢谢你的帮助!
答案 0 :(得分:1)
您可以使用范围的可变长度:
a = []
length = 20
current = 0
maximum = 100
factor = 1.3
while current < maximum:
new = min(maximum, current + length)
a.append([current, new])
current = new
length = int(max(length / factor, 1))
根据您的需要调整length
(初始范围长度)和factor
(每个范围减少)。
示例输出:
[[0, 20], [20, 35], [35, 46], [46, 54], [54, 60], [60, 64], [64, 67], [67, 69], [69, 70], [70, 71], [71, 72], [72, 73], [73, 74], [74, 75], [75, 76], [76, 77], [77, 78], [78, 79], [79, 80], [80, 81], [81, 82], [82, 83], [83, 84], [84, 85], [85, 86], [86, 87], [87, 88], [88, 89], [89, 90], [90, 91], [91, 92], [92, 93], [93, 94], [94, 95], [95, 96], [96, 97], [97, 98], [98, 99], [99, 100]]