当前位置: 代码迷 >> python >> 比较数组每个位置的元素
  详细解决方案

比较数组每个位置的元素

热度:79   发布时间:2023-06-13 15:30:01.0

我有两个数组

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

我得到了奇怪的结果,我是编程新手,可以得到帮助。

抱歉复制粘贴错误

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

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

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

您可以使用集:

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

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

3
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

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

sum(2*b.count(x) - len(b) for x in a)
  相关解决方案