如何在python中查找2d数组中有多少值可以整除为某个值
下面的代码生成随机数的2d数组,我想打印出每对数组中有多少个值可以被3整除。例如,假设我们有一个数组[[2,10],[1,6],[4,8]]。 所以第一对[2,10]有3,6和9,它们都是3,第二对有3和6,它们都是2,最后一对[4,8]只有1除以3,也就是6。因此,最终输出应打印可整除值总数的总和,即3+2+1=6如何在python中查找2d数组中有多少值可以整除为某个值,python,arrays,random,Python,Arrays,Random,下面的代码生成随机数的2d数组,我想打印出每对数组中有多少个值可以被3整除。例如,假设我们有一个数组[[2,10],[1,6],[4,8]]。 所以第一对[2,10]有3,6和9,它们都是3,第二对有3和6,它们都是2,最后一对[4,8]只有1除以3,也就是6。因此,最终输出应打印可整除值总数的总和,即3+2+1=6 a=random.randint(1, 10) b = np.random.randint(1,10,(a,2)) b = [sorted(i) for i in b] c
a=random.randint(1, 10)
b = np.random.randint(1,10,(a,2))
b = [sorted(i) for i in b]
c = np.array(b)
counter = 0;
for i in range(len(c)):
d=(c[i,0],c[i,1])
if (i % 3 == 0):
counter = counter + 1
print(counter)
您可以为任务使用sum()
builtin:
l = [[2, 10], [1, 6], [4, 8]]
print( sum(v % 3 == 0 for a, b in l for v in range(a, b+1)) )
印刷品:
6
5
Pair 2,10:
Number of divisible 3: 3
Number squares: 2
Pair 1,6:
Number of divisible 3: 2
Number squares: 2
Pair 4,8:
Number of divisible 3: 1
Number squares: 1
编辑:要计算完美正方形的数量:
def is_square(n):
return (n**.5).is_integer()
print( sum(is_square(v) for a, b in l for v in range(a, b+1)) )
印刷品:
6
5
Pair 2,10:
Number of divisible 3: 3
Number squares: 2
Pair 1,6:
Number of divisible 3: 2
Number squares: 2
Pair 4,8:
Number of divisible 3: 1
Number squares: 1
编辑2:要打印每个间隔的信息,只需结合上面的两个示例。例如:
def is_square(n):
return (n**.5).is_integer()
for a, b in l:
print('Pair {},{}:'.format(a, b))
print('Number of divisible 3: {}'.format(sum(v % 3 == 0 for v in range(a, b+1))))
print('Number squares: {}'.format(sum(is_square(v) for v in range(a, b+1))))
print()
印刷品:
6
5
Pair 2,10:
Number of divisible 3: 3
Number squares: 2
Pair 1,6:
Number of divisible 3: 2
Number squares: 2
Pair 4,8:
Number of divisible 3: 1
Number squares: 1
一种方法是通过测试每个整数来计算区间中有多少整数可以被3整除 另一种方法是使用数学,如果你的时间间隔很大,这会更有效 以
[2,10]
为间隔
2/3=0.66;ceil(2/3)=1
10/3=3.33;楼层(10/3)=3
现在我们需要计算0.66到3.33之间存在多少个整数,或者计算1到3之间存在多少个整数。嘿,听起来很像减法!(然后添加一个)
让我们把它写成一个函数
from math import floor, ceil
def numdiv(x, y, div):
return floor(y / div) - ceil(x / div) + 1
因此,给定一个间隔列表,我们可以这样称呼它:
count = 0
intervals = [[2, 10], [1, 6], [4, 8]]
for interval in intervals:
count += numdiv(interval[0], interval[1], 3)
print(count)
或者使用列表理解和总结:
count = sum([numdiv(interval[0], interval[1], 3) for interval in intervals])
你是说
[2,10]
、[1,6]
和[4,8]
是,并且你想计算每个区间中有多少整数可以被3整除?是的。这是正确的,谢谢,我们如何找到所有对中有一个完美平方的值的总数。非常感谢。如果我想打印每一对的可整除和完美平方的数目,而不求和,该怎么办。例如,对于第一对打印3 2,其中3是可整除数,2是完全平方数。这正是为什么仅代码答案对初学者没有帮助的原因。教一个人钓鱼之类的。@user14263018请看我的编辑2。@user14263018您可能是指print({})。格式(sum((v%3==0)和(a,b+1)范围内v的平方(v))
,它将打印出一些数字,这些数字是完美的正方形,可以被3整除。