num = [8, 9, 4, 1, 2, 3]
def con(rng, pos=0):
if pos < len(rng):
if (pos > 0 and rng[pos]-1 == rng[pos-1]) or (pos < len(rng) -1 and rng[pos]+1 == rng[pos+1]):
print("con", rng[pos])
con(rng, pos+1)
con(num)
редактировать: это решение основано на параллельной функции и требует только список в качестве аргумента. Пока они находятся в пределах нижней / верхней границы списка, функция будет проверять, равны ли (предыдущее число) -1 или (следующее число) +1 (это число): con 8 con 9 con 1 con 2 con 3
Попробуйте отбросить Response.End (), так как это приведет к преждевременному завершению потока и предотвращению кэширования вывода.
См .: http://bytes.com/groups/net-asp/323363-cache-varybyparam-doesnt-work
. Вы можете пожелать рассмотреть возможность использования обработчика ASHX и использования свой метод кеширования.
Используйте универсальный обработчик ASHX и используйте HttpRuntimeCache (объект Cache), чтобы выполнить работу как Кодовый мозг сказал. Это будет быстрее и намного гибче.
Ваша проблема могла быть ошибкой в IE - он не может кэшировать, если Vary: *
Заголовок ответа HTTP используется, но IIS возвращает его по умолчанию, поскольку он указан в спецификации HTTP 1.1.
Попробуйте добавить в свой web.config следующее:
<system.web>
<caching>
<outputCache omitVaryStar="true" />
</caching>
</system.web>