如何在忽略零元素的情况下对任何数组中的数字进行除法。例如,如果我有一个数组:
[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}")