List is continuous

Hi

If I have a simple list of lists, what is the best way to check if the lists are continuous? For example, in the image below, List [0] is not continuous, whereas list [1] is. Is this a task for Python or can it be achieved with OOTB nodes?

Thanks

Off the top of my head, try this:

(List.Drop(lst,1)-List.Drop(lst,-1)) ==1;
Then check if all true.

image

2 Likes

Python definition :wink:

import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

def sequential(list):
	check = []
	for i in list:
		try:
			if list[list.index(i)+1]==i+1:
				check.append(True)
			else:
				check.append(False)
		except:
			pass
	return all(check)

input = IN[0]
output = []

for i in input:
	output.append(sequential(i))
		
OUT = output
2 Likes

Hi @Paul_Wintour ,

Just another perspective to your question. Have you considered forward sequence only? How about the reverse? say 3,2,1 is that considered as continuous as well?

I believe python by @Ewan_Opie would be the cleanest. But if purely nodes and simple code blocks then check out this option.

Sample Dyn - ListContinuousForwardBackward.dyn (39.9 KB)

Cheers,
Jowenn

2 Likes

@simoneavellini This is what I was after. Thanks.

Thanks too for the Python script @Ewan_Opie. Lots of options

@JowennLua Forward sequence only as they were indexs of elements.

2 Likes

Hello
you can also use the range function Python to compare

myList = IN[0]
OUT = (myList == list(range(myList[0], myList[-1]+1)))