a = [{min(a): max(a), max(a): min(a)}.get(x, x) for x in a]
a[:] = map(lambda x: min(a) if x == max(a) else max(a) if x == min(a) else x, a)
d = {min(a), max(a)}
a[:] = (sum(d) - x if x in d else x for x in a)
d = {min(a), max(a)}
a[:] = ((d & {sum(d) - x} or {x}).pop() for x in a)
from operator import itemgetter
(i_min, v_min), *_, (i_max, v_max) = sorted(enumerate(a), key=itemgetter(1))
a[i_min], a[i_max] = v_max, v_min
i_min, v_min = min(enumerate(a), key=itemgetter(1))
i_max, a[i_min] = max(enumerate(a), key=itemgetter(1))
a[i_max] = v_min
Как известно, имена, которым выполняется присваивание внутри функции, по умолчанию рассматриваются как локальные – они располагаются в области видимости функции и существуют только во время работы функции. Но я еще не говорил, что локальные переменные определяются статически, во время компиляции программного кода в инструкции def, а не в соответствии с операциями присваивания, производимыми во время выполнения. Эта особенность становится причиной появления самых причудливых сообщений в группе новостей, получаемых от начинающих программистов. Обычно, если внутри функции имени не присваивается какое-либо значение, поиск его будет производиться в области видимости объемлющего модуля. Но посмотрите, что произойдет, если добавить инструкцию присваивания переменной X после ее использования.X = 99 >>> def selector(): ... print(X) # Переменная еще не существует! ... X = 88 # X классифицируется как локальная переменная ... # То же самое происходит при “import X”, “def X”... >>> selector() Traceback (most recent call last): ...текст сообщения об ошибке опущен... UnboundLocalError: local variable ‘X’ referenced before assignment
Было получено сообщение о том, что переменная не определена, но причина его появления не очевидна. Этот программный код компилируется интерпретатором во время ввода в интерактивной оболочке или во время импорта модуля. Вовремя компиляции Python обнаруживает операцию присваивания переменной X и делает вывод, что X – это локальное имя везде в теле функции. Но во время выполнения функции, из-за того, что к моменту вызова инструкции print операция присваивания еще не производилась, интерпретатор сообщает о том, что имя не определено. Согласно этому правилу использования имен, он говорит, что обращение к локальной переменной X произведено до того, как ей было присвоено значение. Фактически любая операция присваивания внутри функции создает локальное имя. Операция импортирования, =, вложенные инструкции def, вложенные определения классов и так далее – все трактуются именно таким образом. Проблема возникает из-за того, что операция присваивания делает имена локальными для всей функции, а не только для той ее части, которая следует за инструкцией присваивания.
git config --global user.name "Твоё имя латинницей"
git config --global user.email твой_email
git clone https://ссылка_на_репозиторий.git
.gitignore
и папка .git
).git add --all
git commit -m 'update'
git push origin master
Какой-то конкретной цели, объясняющей для чего мне это надо, пока что нет.