Maison > Questions et réponses > le corps du texte
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
,怎么破?只能自己实现遍历么?
大家讲道理2017-04-17 17:28:55
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']]
天蓬老师2017-04-17 17:28:55
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']]
ringa_lee2017-04-17 17:28:55
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)))