算法 - Python二维数组怎么求并集?
PHPz
PHPz 2017-04-17 17:26:55
0
3
512
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

学习是最好的投资!

membalas semua(3)
大家讲道理

Anda boleh menggunakan kod berikut untuk mencapai ini:

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] ]

Semak keputusan:

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

Anda boleh melakukan ini:

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)]

Semak keputusan:

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

Sudah pasti tidak boleh menggunakan operasi set secara langsung, kerana elemen dalam senarai masih dalam senarai, iaitu objek boleh ubah, dan objek operasi set mestilah objek tidak berubah, jadi jika anda ingin mengulanginya, lebih mudah caranya ialah untuk Balasan pada ditukar menjadi tuple objek tidak berubah, dan kemudian set dinyahduplikasi. Seperti berikut, ia sebenarnya adalah traversal.

map(list,set(map(tuple, a + b)))
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan