Учитывая
sequence = '1011101111'
sub = "11"
Код
В этом конкретном случае:
sum(x == tuple(sub) for x in zip(sequence, sequence[1:]))
# 5
В более общем смысле это
windows = zip(*([sequence[i:] for i, _ in enumerate(sequence)][:len(sub)]))
sum(x == tuple(sub) for x in windows)
# 5
или перейти к генераторам:
import itertools as it
iter_ = (sequence[i:] for i, _ in enumerate(sequence))
windows = zip(*(it.islice(iter_, None, len(sub))))
sum(x == tuple(sub) for x in windows)
Альтернатива
Вы можете использовать more_itertools.locate
:
import more_itertools as mit
len(list(mit.locate(sequence, pred=lambda *args: args == tuple(sub), window_size=len(sub))))
# 5
JavaScript, эквивалентный для PHP's die
. BTW, который это просто называет exit()
(благодарит splattne):
function exit( status ) {
// http://kevin.vanzonneveld.net
// + original by: Brett Zamir (http://brettz9.blogspot.com)
// + input by: Paul
// + bugfixed by: Hyam Singer (http://www.impact-computing.com/)
// + improved by: Philip Peterson
// + bugfixed by: Brett Zamir (http://brettz9.blogspot.com)
// % note 1: Should be considered expirimental. Please comment on this function.
// * example 1: exit();
// * returns 1: null
var i;
if (typeof status === 'string') {
alert(status);
}
window.addEventListener('error', function (e) {e.preventDefault();e.stopPropagation();}, false);
var handlers = [
'copy', 'cut', 'paste',
'beforeunload', 'blur', 'change', 'click', 'contextmenu', 'dblclick', 'focus', 'keydown', 'keypress', 'keyup', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'resize', 'scroll',
'DOMNodeInserted', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument', 'DOMNodeInsertedIntoDocument', 'DOMAttrModified', 'DOMCharacterDataModified', 'DOMElementNameChanged', 'DOMAttributeNameChanged', 'DOMActivate', 'DOMFocusIn', 'DOMFocusOut', 'online', 'offline', 'textInput',
'abort', 'close', 'dragdrop', 'load', 'paint', 'reset', 'select', 'submit', 'unload'
];
function stopPropagation (e) {
e.stopPropagation();
// e.preventDefault(); // Stop for the form controls, etc., too?
}
for (i=0; i < handlers.length; i++) {
window.addEventListener(handlers[i], function (e) {stopPropagation(e);}, true);
}
if (window.stop) {
window.stop();
}
throw '';
}
Если Вы ищете способ насильственно завершить выполнение всего JavaScript на странице, я не уверен, что существует официально санкционированный способ сделать это - это походит на вид вещи, которая могла бы быть угрозой безопасности (хотя честно говоря, я не могу думать, как это было бы первое, что пришло на ум). Обычно в JavaScript, когда Вы хотите, чтобы Ваш код прекратил работать, Вы всего return
от любой функции выполняетесь. (return
оператор является дополнительным, если это - последняя вещь в функции, и функция не должна возвращать значение), Если существует некоторая причина, возвращающаяся, не достаточно хорошо для Вас, необходимо, вероятно, отредактировать больше детали в вопрос относительно того, почему Вы думаете, что Вам нужен он, и возможно кто-то может предложить альтернативное решение.
Примечание, что на практике, интерпретаторы JavaScript большинства браузеров просто прекратят запускать текущий скрипт, если они встретятся с ошибкой. Таким образом, можно сделать что-то как доступ к атрибуту переменной сброса:
function exit() {
p.blah();
}
и это будет , вероятно , прерывают сценарий. Но Вы не должны рассчитывать на это, потому что это нисколько не стандартно, и это действительно походит на ужасную практику.
РЕДАКТИРОВАНИЕ : хорошо, возможно, это не было таким хорошим ответом в свете Г “lafur's. Хотя эти die()
функция он связал с в основном реализациями мой второй абзац, т.е. это просто бросает ошибку.
я использую эту часть кода для остановки выполнения:
throw new FatalError("!! Stop JS !!");
Вы получите консольную ошибку хотя, но она работает хорошая для меня.