算法 - Python二维数组怎么求并集?
PHPz
PHPz 2017-04-17 17:26:55
0
3
510
a=[[1,2,'g'],[2,4,'f']]
b=[[2,4,'f'],[1,2,'f']]

a和b的并集是

c=[[1,2,'g'],[2,4,'f'],[1,2,'f']]

无法使用set().union,怎么破?只能自己实现遍历么?

PHPz
PHPz

学习是最好的投资!

répondre à tous(3)
大家讲道理

Vous pouvez utiliser le code suivant pour y parvenir :

a=[[1,2,'g'],[2,4,'f']]
b=[[2,4,'f'],[1,2,'f']]
tmp = a + b
c = [ (tmp[i]) for i in range(0, len(tmp)) if tmp[i] not in tmp[:i] ]

Vérifier les résultats :

print c
[[1, 2, 'g'], [2, 4, 'f'], [1, 2, 'f']]
Peter_Zhu

Vous pouvez faire ceci :

a=[[1,2,'g'],[2,4,'f']]
b=[[2,4,'f'],[1,2,'f']]
c=[list(i) for i in set(tuple(j) for j in a+b)]

Vérifier les résultats :

print c
[[2, 4, 'f'], [1, 2, 'f'], [1, 2, 'g']]
左手右手慢动作

Il n'est certainement pas possible d'utiliser directement les opérations d'ensemble, car les éléments de la liste sont toujours des listes, qui sont des objets mutables, et les objets des opérations d'ensemble doivent être des objets immuables, donc si vous voulez le répéter, le plus simple La méthode est de La réponse est convertie en un tuple d'objet immuable, puis l'ensemble est dédupliqué. Comme suit, il s’agit en fait d’une traversée.

map(list,set(map(tuple, a + b)))
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal