对任意数组中的非零元素进行除法运算



如何在忽略零元素的情况下对任何数组中的数字进行除法。例如,如果我有一个数组:

[1, 0 , 2, 0, 4, 0, 12]

我想打印一下:

q1 = 2/1 = 2
q2 = 4/2 = 2
q3 = 12/4 = 3

另一个例子是,如果我有一个数组:

[1, 0, 0, 4, 0, 0, 8]

我希望结果是:

q1 = 4/1 = 4
q2 = 8/4 = 2

使用filter()可以创建非零值迭代器。然后简单地将每个元素与前一个元素分开:

l = [1, 0, 2, 0, 4, 0, 12]
no_zeros = filter(None, l)
prev = next(no_zeros)
for cur in no_zeros:
print(f"{cur}/{prev} = {cur//prev}")
prev = cur

打印输出:

2/1 = 2
4/2 = 2
12/4 = 3

您可以首先过滤输入列表以忽略0s。

然后,您可以通过用列表的尾部压缩原始列表来获得成对的(i,i+1(元组。

这将允许您按顺序打印商。

nums = [1, 0 , 2, 0, 4, 0, 12]
non_zeros = [num for num in nums if num != 0]
for i, (divisor, dividend) in enumerate(zip(non_zeros, non_zeros[1:])):
quotient = dividend / divisor
print(f"q{i + 1}: {dividend}/{divisor} = {quotient}")

最新更新