繁体   English   中英

迭代列表列表并在这些列表中查找连续的数字

[英]Iterate list of lists and finding consecutive numbers in those lists

目前,我正在尝试在嵌套列表中查找连续的数字。 我的目标是以下示例:

nested = [ [1,7,13], [2,5,8], [3, 6, 9] ]

输出: (1,2,3), (7,8,9)

如果列表多于三个,它也应该起作用。 列表的数量可以变化。

(为此,背景;我正在为学校建立搜索引擎,嵌套的数字是用户给出的查询词的位置。)

我用过 :

def is_coherent(x):
    return all(np.diff(x) == 1)

查看整数是否连续。 我也尝试过itertools.izip。 但是,这不允许我更改要迭代的列表的数量。

任何帮助将不胜感激!

我想您想从内部列表的笛卡尔积中获得所有项目都是连续的那些项目,为此,您可以尝试如下操作:

from itertools import izip, product

def find_continuous_items(data):
    for p in product(*data):
        if all(b-a==1 for a, b in izip(p, p[1:])):
            yield p

nested = [[1,7,13], [2,5,8], [3, 6, 9]]
print list(find_continuous_items(nested))
#[(1, 2, 3), (7, 8, 9)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM