var nameList = [
{name:'x', age:20, email:'x@email.com'},
{name:'y', age:60, email:'y@email.com'},
{name:'Joe', age:22, email:'joe@email.com'},
{name:'Abc', age:40, email:'abc@email.com'}
];
var filteredValue = nameList.filter(function (item) {
return item.name == "Joe" && item.age < 30;
});
//To See Output Result as Array
alert(JSON.stringify(filteredValue));
Вы можете просто использовать javascript:)
Ваша проблема в том, что вы не придерживаетесь строго целых чисел. Целые числа Python имеют динамический размер, поэтому они могут соответствовать любому размеру значения, которое вы хотите, без потери точности. Но числа с плавающей точкой имеют изначально ограниченную точность.
Когда вы делаете low = high/2
, вы получаете вычисление с плавающей запятой, даже если вы этого не планируете. Поскольку low
- это число с плавающей точкой, mid
тоже оказывается единым целым, и когда вы проверяете куб mid
, число с плавающей точкой оказывается переполненным, и вы получаете исключение.
Если вы измените первое вычисление low
на использование //
вместо /
, вы будете придерживаться целых чисел на протяжении всего вычисления и не получите исключения переполнения. С этим единственным изменением я смог запустить ваш код и получить ожидаемый результат:
>>> find_invpow(num, 3)
408280486712458018941011423246208684000839238529670746836313590220206147266723174123590947072617862777039701335841276608156219318663582175921048087813907313165314488199897222817084206