воскресенье, 23 февраля 2014 г.

Python: Массив с конца: ~n

Чем дольше изучаю Python, тем больше я его люблю и тем сильнее он мне нравится. Если вы хоть немного знакомы с Python, то и slicing наверняка знаете и в этом slicing есть особенность — элементы в массивах, словарях и так далее, если их считать с начала, нумеруются с 0 (как и во всех языках программирования), а если с конца — с минус единицы

print("Hello"[0], "Hello"[-1])
(H, o)

Когда я только начал учить Python, то для меня такое поведение было нормой и вполне логичным. До тех пор, пока вместо фиксированных index notation не пришлось использовать переменные:
i=2
print("Hello"[i], "Hello"[-i-1])
(l, l)

Т. е. чтобы взять значение с конца, нужно постоянно добавлять минус единицу. Что, согласитесь, является потенциальным источником багов (сколько boundary тестов повалилось на одном нашем продукте из-за этого). Но есть способ лучше, спасибо всеобщему разуму, который подсказал эту идею:
print("Hello"[i], "Hello"[~i])
(l, l)
print("Hello"[0], "Hello"[~0])
(H, o)

Вместо очередной минус единицы достаточно использовать тильду — ~ Не могу сказать на счет скорости работы, ибо замеров не делал, но судя по времени прохождения моих smoke тестов — вариант с ~ работает так же, как и с «минусединицей» Пользуйтесь на здоровье

понедельник, 3 февраля 2014 г.

Символ Олимпийских Игр 2014

Если вы думаете, что символом Олимпийских Игр 2014 года являются Леопард, Белый Медведь и Зайка, то вы очень и очень сильно ошибаетесь.

Никто, и я сейчас не утрирую, и не привираю ни на йоту, НИКТО из тех, с кем мне приходилось общаться «в этой вашей Америке», не знает про Зайку, Медведя и Леопарда. Часть из них вообще не знает про Олимпийские Игры, а те, кто слышал хоть краем глаза про Сочи 2014 задают мне один и тот вопрос: «А ты видел эти двойные туалеты?!»


Те, кто поумнее, конечно же понимают, что ситуация с double-сортирами не типичная для России, но часть людей все же спрашивает: «Ой, а в России все туалеты двойные?» А сегодня, прогуливаясь с нашими dev guys, когда речь зашла про эти же туалеты, один разработчик-индус сказал фразу, которая резанула меня очень сильно, — «В России эти туалеты, прям как у нас в Индии»

Если честно, то с одной стороны вся эта ситуация кажется очень смешной, а с другой стороны — безумно обидно. Обидно даже мне, человеку, которого сложно «обвинить» в любви к России. Потратить кучу бабла, переступить через столько судеб людей, полностью изуродовать уникальную природу... И все ради того, чтобы символом Олимпийских Игр 2014 года, для простых обывателей, стал двойной сортир, — «прям как в Индии»