Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中检查两个数组中的反向对重复_Python_Arrays_Python 2.7 - Fatal编程技术网

在python中检查两个数组中的反向对重复

在python中检查两个数组中的反向对重复,python,arrays,python-2.7,Python,Arrays,Python 2.7,我有两个数组,如下所示: a = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5] b = [1, 2, 5, 1, 3, 2, 3, 4, 3, 5, 1, 4] 这两个数组可以形成的所有可能的对是(a[0],b[0]),(a[1],b[1]),(a[2],b[2]),(a[3],b[3]),…,(a[11],b[11])。这两个数组具有相同的长度,并且在相同的索引之间形成一对。 问题是要检查有多少对存在反向对。 例如,在我上面提供的数组中,对(a[1],b[1])和

我有两个数组,如下所示:

a = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5]
b = [1, 2, 5, 1, 3, 2, 3, 4, 3, 5, 1, 4]
这两个数组可以形成的所有可能的对是
(a[0],b[0]),(a[1],b[1]),(a[2],b[2]),(a[3],b[3]),…,(a[11],b[11])
。这两个数组具有相同的长度,并且在相同的索引之间形成一对。 问题是要检查有多少对存在反向对。 例如,在我上面提供的数组中,对
(a[1],b[1])
(a[3],b[3])
形成一个反向对,因为
(1,2)
(2,1)
彼此反向。类似地,
(a[2],b[2])
(a[10],b[10])
形成反向对。有人能告诉我如何计算两个阵列之间存在的反向对的总数吗?
非常感谢您抽出时间

这是一个相当模糊的问题。 如果存在单个反向对,是否要计数
+1
,或者如果在数组中找到
(a[i],b[i])
的n个反向,是否要计数
+n
? 一次只计算反向对怎么样?
(1,1)
是否应算作反向对

对于将来,可能会显示您对简单测试系统的期望答案

我希望您的测试系统应该给出
n=12
反向对,假设您在计算中只计算了一次反向对

这只是一个易于阅读的简单实现:

A = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5]
B = [1, 2, 5, 1, 3, 2, 3, 4, 3, 5, 1, 4]

n = 0
pairs = [pair for pair in zip(A, B)]
for rev_pair in zip(B, A):
    if rev_pair in pairs:
        n += 1
我相信可以更快地实施

A = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5]
B = [1, 2, 5, 1, 3, 2, 3, 4, 3, 5, 1, 4]

for pair in zip(A,B):

    rpair = pair[::-1]

    print(pair,rpair)
结果:

(1, 1) (1, 1)
(1, 2) (2, 1)
(1, 5) (5, 1)
(2, 1) (1, 2)
(2, 3) (3, 2)
(3, 2) (2, 3)
(3, 3) (3, 3)
(3, 4) (4, 3)
(4, 3) (3, 4)
(4, 5) (5, 4)
(5, 1) (1, 5)
(5, 4) (4, 5)

A = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5]
B = [1, 2, 5, 1, 3, 2, 3, 4, 3, 5, 1, 4]

for pair in zip(A,B):

    rpair = pair[::-1]

    if pair[0] == rpair[1] and pair[1] == rpair[0]:

        print(pair,rev_pair)
结果

(1, 1) (4, 5)
(1, 2) (4, 5)
(1, 5) (4, 5)
(2, 1) (4, 5)
(2, 3) (4, 5)
(3, 2) (4, 5)
(3, 3) (4, 5)
(3, 4) (4, 5)
(4, 3) (4, 5)
(4, 5) (4, 5)
(5, 1) (4, 5)
(5, 4) (4, 5)
total pairs : 12
决赛

A = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5]
B = [1, 2, 5, 1, 3, 2, 3, 4, 3, 5, 1, 4]

n = 0
for pair in zip(A,B):

    rpair = pair[::-1]

    if pair[0] == rpair[1] and pair[1] == rpair[0]:
        n = n + 1
print('total pairs : {}'.format(n))
结果

(1, 1) (4, 5)
(1, 2) (4, 5)
(1, 5) (4, 5)
(2, 1) (4, 5)
(2, 3) (4, 5)
(3, 2) (4, 5)
(3, 3) (4, 5)
(3, 4) (4, 5)
(4, 3) (4, 5)
(4, 5) (4, 5)
(5, 1) (4, 5)
(5, 4) (4, 5)
total pairs : 12

请提供您尝试过的内容以及它是如何出错的。我想不出逻辑。我不是要代码,只是给我一个逻辑。非常感谢。zip(a,b)为您提供了所有对,因此,也许可以将zip(a,b)与zip(b,a)进行比较?好的,您可以制作一对反向的原始对,添加到原始对列表中,如果您有重复项,请计数。这不是最有效的方法,但至少应该给你一个开始的机会。zip是我一直在寻找的函数。我不知道如何在每个元素上编写一个包含多个值的数组。您可以将
zip(A,B)
提取到外部的变量中,因为当前这是多次调用的。