我正在尝试生成两个数组,a和 b ,每个包含 ~1000 个随机数。随机数在 1 到 5 之间。
然后我想比较 a 中的每个元素与 b 对应的元素这样如果 a[i] > b[i]一个变量,counter , 将增加 1。这被认为是“成功”。否则,如果 a[i] <= b[i]没有任何反应(即 counter += 0 )。这被认为是“失败”。
然而,a和 b可以是可变长度使得 len(a) == len(b)和 len(a) != len(b)是可能性。
在后者的情况下,如果len(a) > len(b)我想要 a 的所有“额外”元素自动算作“成功”。如果len(b) > len(a)事情应该正常进行(即 b 的“额外”元素被忽略)。
例如:
如果a = [1, 3, 4, 2]和 b = [2, 4, 0]
然后counter = 2因为( 1 < 2 、 3 < 4 、 4 > 0 和 2 是额外的并且自动成功`)
我该怎么做呢?
这是一些快速代码,它返回预期的 list index out of range...错误:
import random
a = []
b = []
counter = 0
for i in range(1000):
a += [random.randint(1, 5)]
for i in range(900):
b += [random.randint(1, 5)]
for i in range(len(a)):
if a[i] > b[i]:
counter += 1
print counter
请您参考如下方法:
只需检查一下您是否在循环中跑完了 b 的结尾:
for i in range(len(a)):
if (i >= len(b)) or a[i] > b[i]:
counter += 1
你也可以更聪明一点,做类似的事情:
for i in range(min(len(a), len(b)):
if a[i] > b[i]:
counter += 1
if len(a) > len(b):
counter += (len(a) - len(b))
(在这里使用 xrange 也是一个小改进。)
