Ваш код разбит на две полностью отдельные части, серверную сторону и клиентскую сторону .
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
<----------
HTML, CSS, JavaScript
|
Обе стороны общаются через HTTP-запросы и ответы. PHP выполняется на сервере и выводит код HTML и, возможно, JavaScript, который отправляется как ответ клиенту, где интерпретируется HTML, и выполняется JavaScript. Когда PHP завершит вывод ответа, сценарий закончится, и на сервере ничего не произойдет, пока не появится новый HTTP-запрос.
Пример кода выполняется следующим образом:
Шаг 1, PHP выполняет весь код между тегами . В результате получилось следующее:
Вызов file_put_contents
не привел ни к чему, он просто написал «+ foo +» в файл. Вызов привел к выводу «42», который теперь находится в том месте, где этот код использовался.
Этот итоговый код HTML / JavaScript теперь отправляется клиенту, где он получает оценку , Вызов alert
работает, а переменная foo
нигде не используется.
Весь PHP-код выполняется на сервере до того, как клиент даже начнет выполнение какого-либо JavaScript. В ответе JavaScript, с которым может взаимодействовать JavaScript, нет кода PHP.
Чтобы вызвать некоторый код PHP, клиент должен будет отправить новый HTTP-запрос на сервер. Это может произойти с использованием одного из трех возможных способов:
Вот более подробный изложение этого метода
Вы также можете использовать JavaScript, чтобы браузер открыл новую страницу с помощью window.location
или отправить форму, подражая возможностям 1 и 2.
Pop()
для последнего элемента должен быть O (1), так как вам нужно вернуть элемент, на который ссылается последний элемент в массиве, и обновить индекс последнего элемента. Я ожидал бы, что pop()
для произвольного элемента будет O (N) и потребует в среднем N / 2 операций, так как вам нужно будет перемещать любые элементы за пределами элемента, который вы удаляете по одной позиции в массиве указателей.
Да, это O (1), чтобы поместить элемент last в список Python и O (N), чтобы поместить произвольный элемент (так как весь остаток список должен быть сдвинут).
Вот отличная статья о том, как хранятся и обрабатываются списки Python: http://effbot.org/zone/python-list.htm ]
Ниже приведен короткий ответ: https://wiki.python.org/moin/TimeComplexity
Без аргументов, чтобы поп его O (1)
С аргументом pop:
Средняя временная сложность:
Амортизированная худшая временная сложность случая
Худшая временная сложность случая
Это должно быть O (1) с L.pop (-1), а O (n) с L.pop (0)
см. следующий пример:
from timeit import timeit
if __name__ == "__main__":
L = range(100000)
print timeit("L.pop(0)", setup="from __main__ import L", number=10000)
L = range(100000)
print timeit("L.pop(-1)", setup="from __main__ import L", number=10000)
>>> 0.291752411828
>>> 0.00161794329896