我想知道 Python 中是否已经为我稍后描述的目标编写了一个函数。如果没有,最简单的实现方法是什么。附上我的代码。
假设我的范围从 1 到 999999999。给定这样的数字列表:
[9, 44, 99]
它会回来
[(1,9), (10,44), (45,99), (100, 999999999)]
如果作为限制的数字包含在输入数字中,它也应该处理它。说输入是
[1, 9, 44, 999999999]
回报应该是:
[(1,9), (10,44), (45, 999999999)]
我可以编写一个 for 循环与一些条件语句进行比较,但想知道是否有更“智能的方式”。
一些可能有用的数据按摩:
points = [1, 9, 44, 99]
points = sorted(list(set(points + [1, 999999999])))
更新信息:alecxe 的最终学分,感谢您鼓舞人心的列表理解解决方案
l = sorted(list(set(points + [1, 999999999])))
[(l[i] + int(i != 0), l[i + 1]) for i in xrange(len(l) - 1)]
您可以将所有这些放在一行中,但我认为这是不必要的。