python获取列表序号_确定列表中的序列号(Python)

我试图找到一种最具代表性的方法来找出列表中的数字是否是连续的。为了提供一些背景,我收集了一个文件夹中存在的号码列表,我需要找出哪些号码丢失了。在

我收集所有的数字,然后从范围(开始,结束+1)中列出应该有哪些数字。我很容易地做了些东西来显示所有缺失的数字:missing = [x for x in existingNumbers if x not in shouldBeNumbers]

问题是,如果我把这些都打印出来,会有很多数字可以压缩(例如,1、2、3、4、7、10可以打印成1-4、7、10),因为可能会有大量的数字丢失。在

我试过两种方法:

对于这两种方式,frameRange是range(startFrame,endFrame+1),frameList是根据当前存在的内容生成的列表。在

(一)

^{pr2}$

(二)i = 0

while i < len(frameRange):

if frameRange[i] in frameList:

i += 1

else:

if i + 1 < len(frameRange):

if frameRange[i + 1] in frameList:

missingFrames.append(str(frameRange[i]))

i += 1

else:

j = 1

while frameRange[i+j] not in frameList:

aheadFrameNumber = int(str(j))

if i + j + 1 < len(frameRange):

j += 1

else:

break

missingFrames.append(str(frameRange[i])+"-"+str(frameRange[aheadFrameNumber]))

if i + aheadFrameNumber + 1 < len(frameRange):

i += aheadFrameNumber + 1

else:

missingFrames.append(str(frameRange[i]))

第一种方法是有效的,但是由于它发生在当前帧上检查最后一帧,所以每当最后一帧消失时,它不会将最后丢失的部分追加到列表中。对于第二种方法,我不得不继续用if语句包装所有内容,因为在向前移动时,我不断地得到索引异常。在

我想我必须退后一步,重新思考,以不同的方式对待它。我想知道在python中是否有更好的方法来实现这一点,我还没有考虑过,因为我不知道函数。两种方式都开始有点失控。在

你可能感兴趣的:(python获取列表序号)