如何在python中查找2d数组中有多少值可以整除为某个值

如何在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

下面的代码生成随机数的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 = 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整除。