For list comprehensions that need current, next:
[fun(curr,next)
for curr,next
in zip(list,list[1:].append(None))
if condition(curr,next)]
For circular list zip(list,list[1:].append(list[0])).
For previous, current: zip([None].extend(list[:-1]),list) circular: zip([list[-1]].extend(list[:-1]),list)