我创建了一个列表(已排序):

indexlist = [0, 7, 8, 12, 19, 25, 26, 27, 29, 30, 31, 33]

我想从此列表中提取彼此至少相距至少五个的数字,并将其输入到另一个列表中。这有点令人困惑。这是我想要输出的示例:
outlist = [0, 7, 19, 25, 31]

如您所见,这两个数字都不在5个以内。

我试过这种方法:
for index2 in range(0, len(indexlist) - 1):
        if indexlist[index2 + 1] > indexlist[index2] + 5:
            outlist.append(indexlist[index2])

但是,这给了我以下输出:
outlist = [0, 12, 19]

当然,这些数字至少相距5个,但是,我缺少一些需要的值。

关于如何完成此任务的任何想法?

最佳答案

您需要跟踪添加到列表中的最后一项,而不仅仅是与以下值进行比较:

In [1]: indexlist = [0, 7, 8, 12, 19, 25, 26, 27, 29, 30, 31, 33]
In [2]: last = -1000 # starting value hopefully low enough :)
In [3]: resultlist = []
In [4]: for item in indexlist:
   ...:     if item > last+5:
   ...:         resultlist.append(item)
   ...:         last = item
   ...:
In [5]: resultlist
Out[5]: [0, 7, 19, 25, 31]

关于python - 从列表中提取数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36772065/

10-12 13:40