目前我正在尝试在嵌套列表中查找连续数字。我的目标是以下示例:
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。但是,这不允许我改变我想要迭代的列表数量。
非常感谢任何帮助!
答案 0 :(得分:2)
我想你想从内部列表的笛卡尔积中得到那些项目,这些项目的所有项目都是连续的,因为你可以尝试这样的事情:
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)]