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

2024-05-20 00:05:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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文件. 然而,这不允许我改变我想要遍历的列表的数量。你知道吗

任何帮助都将不胜感激!你知道吗


Tags: 用户示例目标列表数量returnisdef
1条回答
网友
1楼 · 发布于 2024-05-20 00:05:26

我想你应该从所有项都是连续的内部列表的笛卡尔积中得到这些项,因为你可以这样做:

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)]

相关问题 更多 >