Я наткнулся на вопрос интервью:Есть ли правило большого пальца, чтобы решить, использовать ли логические операторы или нет?
У нас есть номера от 1 до n в любом порядке. Мы начинаем помещать эти числа в любом порядке в размер массива n-1. Это означает, что будет один номер, который не был бы введен в массив. Мы должны это найти.
Простое решение:
a = [4, 2, 3, 1, 5, 7]
n = 7
print sum(range(1, n+1)) - sum(a) ## prints 6
Одно решение, которое я нашел в интернете:
XOR все элементы из 1 ВЗ п и магазин к X1
исключающее все элементы массива и хранить до X2
отсутствует элемент = X1 XOR X2
Код, который я сделал это:
print reduce(lambda a, b: a^b, range(1, n+1))^reduce(lambda a, b: a^b, a) ## prints 6
Никоим образом второй метод был интуитивно понятным для меня. Существуют ли конкретные варианты использования, когда логические операторы применяются таким образом?
Это правильно, хотя это очень странный способ сделать это. Просто для ясности: это побитовый оператор, а не логический оператор (который будет работать на правдивость значения). – spectras