当前位置: 首页 > 面试题库 >

将整数列表转换为python中的范围

阎弘
2023-03-14
问题内容

python中是否存在可以将不断增加的整数列表转换为范围列表的内容

例如,给定集合{0,1,2,3,4,7,8,9,11},我想得到{{0,4},{7,9},{11,11}}。

我可以编写一个程序来执行此操作,但想知道python中是否有内置函数


问题答案:

使用itertools.groupby()产生了一个简洁但棘手的实现:

import itertools

def ranges(i):
    for a, b in itertools.groupby(enumerate(i), lambda pair: pair[1] - pair[0]):
        b = list(b)
        yield b[0][1], b[-1][1]

print(list(ranges([0, 1, 2, 3, 4, 7, 8, 9, 11])))

输出:

[(0, 4), (7, 9), (11, 11)]


 类似资料:
  • 我想使用python将字符串转换成整数列表。一些例子可能是: 有没有快速简单的方法来做到这一点?

  • 我们有一个对象/数组/列表,其中有这种格式的数据-[100, 200, 300, 400,......1000]或[150, 300, 450,....1500]。这些值在nvd3图中用作yAxis值。数据点的总数总是10。 我们有一个要求,而不是将这些整数显示为yAxis点,我们需要将值显示为一个范围,如[0-99100-199200-299…900-1000]或[0-149150-299300

  • 问题内容: 我该如何打开一个列表,例如: 进入列表列表,例如: 即我想将有序元素分组在列表中,并将其保留在有序列表中。我怎样才能做到这一点? 谢谢 问题答案: 假设data_list的长度是三的倍数

  • 问题内容: 我希望能够将诸如“ 1,2,5-7,10”之类的字符串转换为诸如[1,2,5,6,7,10]之类的python列表。我环顾四周,发现了这一点,但是我想知道是否有一种干净简单的方法可以在Python中做到这一点。 问题答案: def f(x): result = [] for part in x.split(‘,’): if ‘-‘ in part: a, b = part.split(

  • 问题内容: 那是我的JSON数组,但我想将fruits字符串中的所有值转换为Python列表。正确的做法是什么? 问题答案: 您拥有了所需的一切。将是一个字典,将是一个列表

  • 我有一个仅包含值的数据集,我想将这些int值转换为的范围。我这里有两种方法已经奏效了。不过,我想试试带有的。现在我的问题是,如何将每列转换为的值范围,而不违反值,即更改值。例如,因为3代表一个类。