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

python从列表中返回连续整数的列表

谢涵亮
2023-03-14
问题内容

我有一个整数列表,我想生成一个包含所有连续整数列表的列表。

#I have:
full_list = [0,1,2,3,10,11,12,59]
#I want:
continuous_integers = [[0,1,2,3], [10,11,12], [59]]

我有以下可行的方法,但似乎做起来很糟糕:

sub_list = []
continuous_list = []
for x in full_list:
    if sub_list == []:
        sub_list.append(x)
    elif x-1 in sub_list:
        sub_list.append(x)
    else:
        continuous_list.append(sub_list)
        sub_list = [x]
continuous_list.append(sub_list)

我已经看到其他问题,表明itertools.groupby是执行此操作的有效方法,但是我对该函数不熟悉,而且似乎在编写lambda函数来描述连续性方面遇到麻烦。

问题:是否有更好的方法(可能使用itertools.groupby?)

注意事项:full_list将具有1到59之间的整数,将始终被排序,并且整数将在0到59之间。


问题答案:

您可以使用以下配方:

from operator import itemgetter
from itertools import groupby
full_list = [0,1,2,3,10,11,12,59]
cont = [map(itemgetter(1), g) for k, g in groupby(enumerate(full_list), lambda (i,x):i-x)]
# [[0, 1, 2, 3], [10, 11, 12], [59]]


 类似资料:
  • 问题内容: 我想识别列表中的连续数字组,以便: 返回值: 并且想知道实现此目的的最佳方法是什么(特别是如果Python内置了某些东西)。 编辑:注意,我最初忘记提及个人数字应作为个人数字而不是范围返回。 问题答案: 是在4.0版中添加的。 演示版 应用此工具,我们将生成一个生成器函数来查找连续数字的范围。 所述源执行模拟一个经典配方(由@Nadia Alramli所证明)。 注意:more_ite

  • 问题内容: 我想要一个包含1到500范围内的整数的列表。是否有某种方法可以使用Guava(或只是纯Java)创建此列表,而不必遍历该范围并将值分别添加到我自己的列表中码? 问题答案: 使用番石榴,您可以诉诸于:http : //docs.guava- libraries.googlecode.com/git/javadoc/com/google/common/collect/Range.html

  • 我在Python中进行多元线性回归,但由于某种原因,系数没有正确返回为列表。相反,将返回列表中的列表: 这将返回列表[]的列表中的值,而不是列表[]。知道为什么会这样吗?输出: 但这行得通: 输出:

  • 问题内容: 考虑到内置的Python List方法,我遇到了问题。 在学习Python的过程中,我一直认为Python变量(就像任何值类变量一样)会返回它创建的新变量。 举个例子: 此列表更改器不返回新列表的主要问题是您随后无法再进行多个更改。假设我想要一个从0到5的列表,而没有2和3。突变体返回新变量应该能够做到这一点: 令人遗憾的是,这不可能。 现在,有没有一种方法可以像我在示例中一样在列表上

  • 这个问题是jOOQ的扩展:在单个对象中返回带有join、groupby和count的列表,但现在返回的是三个对象,而不是两个。 主意 具体示例 如何从查询中获取结果?

  • 问题内容: 这个问题已经在这里有了答案 : 执行功能后,Python脚本返回意外的“无” [重复] (3个答案) 7年前关闭。 输出量 我不想要“无”,那么 如何执行一行代码以返回输入列表中的项目? 我试过了: 但这不起作用,因为return语句不能那样工作 问题答案: 您正在打印的返回码是。只需致电即可。