比较数组每个位置的元素

时间:2015-10-21 15:53:05

标签: python python-2.7 python-3.x

我有两个数组

a = [ab,bc,cd]
b = [bc,ab,cd]

我想将a的每个元素与b的每个元素进行比较,然后如果匹配则增加counter += 1,否则counter -1并显示counter

counter=0
for i in a:
 for j in b: 
   if a[i-1] == b[j-1]:
      counter = counter + 1
   elif a[i-1] != b[j-1]:
      counter = counter - 1
  print counter

我得到了奇怪的结果,我是编程新手,感谢他们的帮助。

很抱歉复制粘贴错误

4 个答案:

答案 0 :(得分:2)

您的elif条件与您的if条件相同,这可能就是为什么它不适合您。事实上,你甚至不需要那里的条件;它应该只是一个else,因为你想要捕捉与if不匹配的所有内容。

那就是说,这种方式更好:

from itertools import product
counter = sum(1 if x==y else -1 for x, y in product(a, b))

答案 1 :(得分:0)

你可以使用套装:

a = ['ab','bc','cd']
b = ['bc','ab','cd']

print(len(set(a).intersection(set(b))))

3

答案 2 :(得分:0)

a = ['ab','bc','cd']
b = ['bc','ab','cd']

counter = 0
for i in a:
    for j in b:
        if i == j:
            counter += 1
        else:
            counter -= 1
print counter

答案 3 :(得分:-1)

只是一个简短而快速的选择:

sum(2*b.count(x) - len(b) for x in a)