목록에서 첫 번째 누락 된 번호를 찾아야합니다. 누락 된 번호가없는 경우 다음 번호는 마지막 +1이어야합니다.Python : 순서가 지정된 목록에서 양의 정수가 누락 된 것을 찾음
그것은 먼저 첫 번째 숫자는> 1 있는지 확인해야하고, 그럼 경우 새로운 번호는 1 여기
내가 뭘하려해야한다. 문제는 여기에 있습니다 : if next_value - items > 1:
결과가 오류로 끝나고 처음에는 None
입니다.
list = [1,2,5]
vlans3=list
for items in vlans3:
if items in vlans3:
index = vlans3.index(items)
previous_value = vlans3[index-1] if index -1 > -1 else None
next_value = vlans3[index+1] if index + 1 < len(vlans3) else None
first = vlans3[0]
last = vlans3[-1]
#print ("index: ", index)
print ("prev item:", previous_value)
print ("-cur item:", items)
print ("nxt item:", next_value)
#print ("_free: ", _free)
#print ("...")
if next_value - items > 1:
_free = previous_value + 1
print ("free: ",_free)
break
print ("**************")
print ("first item:", first)
print ("last item:", last)
print ("**************")
다른 방법으로서 올바른 개수
L = vlans3
free = ([x + 1 for x, y in zip(L[:-1], L[1:]) if y - x > 1][0])
결과 공백 왼쪽 에러가 발생하지 않는 경우가 숫자의 간격이지만, 경우 : IndexError: list index out of range
. 그러나 여유 공간이 없으면 새로운 번호 (마지막 +1)를 부여해야한다는 것을 어떻게 든 지정해야합니다. 그러나 아래 코드를 사용하면 오류가 발생하며 이유를 알 수 없습니다.
if free = []:
print ("no free")
else:
print ("free: ", free)
원래 목록에는 정수 만 포함 할 수 있으며 항상 오름차순입니까? – nekomatic
'if next_value - items> 대신에 다음과 같이 코드를 작성하십시오. 1 :'다음을 추가하십시오 :'if next_value! = None and next_value - items> 1 :'작동 할 것입니다. –
@CsabaDobo 무엇을 의미합니까? 첫 번째 숫자가> 1이고, 그렇다면 새 숫자는 1 "이어야합니다. –