Как вы сравниваете и возвращаете дубликаты в двух разных 2D-списках? - PullRequest
0 голосов
/ 19 октября 2019

Я хотел бы вернуть дубликаты в двух разных 2d списках. Но я не могу понять, какой код написать. Например, я бы хотел, чтобы переменная "a" сравнивалась с переменной "b" и возвращала дубликаты. Вот два моих двухмерных списка ниже.

a = [[2,3,6,8],[4,5,7,8,10],[15,17,21,22],[12,13,14,23,25]]
b = [[4,5,6],[15,17,21,22],[2,3,4],[2,3,6,8],[5,7,8,12,15],[7,12,14,17,32],[5,6,7,12,14]]

Я бы хотел, чтобы мои результаты были:

c = [[2,3,6,8],[15,17,21,22]]

Ответы [ 4 ]

0 голосов
/ 19 октября 2019

один подход к пониманию списка лайнеров:

dups = [i for i in a if i in b]

вывод:

[[2, 3, 6, 8], [15, 17, 21, 22]]
0 голосов
/ 19 октября 2019

Вам просто нужно проверить, находится ли список в a также в b или нет.

a = [[2,3,6,8],[4,5,7,8,10],[15,17,21,22],[12,13,14,23,25]]
b = [[4,5,6],[15,17,21,22],[2,3,4],[2,3,6,8],[5,7,8,12,15],[7,12,14,17,32],[5,6,7,12,14]]
c=[]
for i in a:
    if i in b:
        c.append(i)
print(c)

Вывод:

[[2, 3, 6, 8], [15, 17, 21, 22]]
0 голосов
/ 19 октября 2019

Попробуйте:

a = [[2,3,6,8],[4,5,7,8,10],[15,17,21,22],[12,13,14,23,25]]
b = [[4,5,6],[15,17,21,22],[2,3,4],[2,3,6,8],[5,7,8,12,15],[7,12,14,17,32],[5,6,7,12,14]]
c = []
for i in a + b: 
    if (a + b).count(i) > 1 and i not in c:
        c.append(i)

@ mulaixi ответ в порядке, но в списке вывода вы можете увидеть дубликаты.

0 голосов
/ 19 октября 2019

Это должно сработать, это должно помочь вам начать -

import itertools

#Input lists
a = [[2,3,6,8],[4,5,7,8,10],[15,17,21,22],[12,13,14,23,25]]
b = [[4,5,6],[15,17,21,22],[2,3,4],[2,3,6,8],[5,7,8,12,15],[7,12,14,17,32],[5,6,7,12,14]]

#Take a product of both the lists ( a X b )
z = itertools.product(a,b)

#Uncomment the following to see what itertools.product does
#[i for i in z]

#Return only the elements which the pair of the same element repeats (using string match)
[i[0] for i in z if str(i[0])==str(i[1])]

[[2, 3, 6, 8], [15, 17, 21, 22]]
...