我创建了一个列表(已排序):
indexlist = [0, 7, 8, 12, 19, 25, 26, 27, 29, 30, 31, 33]
Run Code Online (Sandbox Code Playgroud)
我想从这个列表中提取至少相距五个的数字并将它们输入到另一个列表中.这有点令人困惑.这是我想要输出的一个例子:
outlist = [0, 7, 19, 25, 31]
Run Code Online (Sandbox Code Playgroud)
如您所见,这些数字都不在5之内.
我试过这个方法:
for index2 in range(0, len(indexlist) - 1):
if indexlist[index2 + 1] > indexlist[index2] + 5:
outlist.append(indexlist[index2])
Run Code Online (Sandbox Code Playgroud)
但是,这给了我这个输出:
outlist = [0, 12, 19]
Run Code Online (Sandbox Code Playgroud)
当然,这些数字至少有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]
Run Code Online (Sandbox Code Playgroud)