有没有办法知道哪个元素在<div class="container">
<div class="top-round-rainbow">
<div class="white-layer">
</div>
</div>
</div>
内置函数中失败了?
我试图解决Euler 5,我想找出哪些数字我的产品不能被整除。使用for循环很容易弄明白,但是any
也可以吗?
any
我读了from operator import mul
primes_under_20 = [2,3,5,7,11,13,17,19]
product = reduce(mul, primes_under_20, 1)
if any((product % i != 0 for i in range(1,21))):
print "not evenly divisible"
# how can I find out that 4 was the element that failed?
# must I use this for loop?
for i in range(1,21):
if product % i != 0:
print i # prints 4
break
any
相当于:{/ p>
def any(iterable):
for element in iterable:
if element:
return True
return False
但这是确切的实现,还是隐藏yield
,或者这样的东西可以帮助锁定元素?
答案 0 :(得分:2)
有没有充分理由使用any
?
如果你想要一个单行找出哪些数字不能被整除:
not_divisible = [i for i in range(1, 21) if product % i != 0]
if len(not_divisible) > 0:
print(not_divisible)
您无法使用any
获得所有不可分割的数字,因为它会在迭代中找到第一个False
时停止
答案 1 :(得分:1)
我可能不会建议实际执行此操作,因为它感觉有点hacky(并且比仅仅为for
循环删除any()
更丑)。抛开那个免责声明,技术上可以通过利用迭代器和rangemax = 21
rng = iter(range(1,rangemax))
if any(product % i != 0 for i in rng):
print "not evenly divisible"
try:
print next(rng) - 1
except StopIteration:
print rangemax - 1
的属性来实现,一旦它被发现一个真正的价值就停止:
range()
这将基于any()
创建一个迭代器,然后运行True
,如果它评估public static void main(String[] args) {
int [] b = {1,0,0,0};
for(int i = 0; i < b.length; i++){
performInterestingStuffWithArray (b);
if (i < b.length - 1) b[i+1] = 1;
b[i] = 0;
}
}
,则检查迭代器中的下一项(如果你',则检查最大数量)在迭代器的末尾重新开始并减去一个。