Rumah > Soal Jawab > teks badan
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
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']]
天蓬老师2017-04-17 17:28:55
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']]
ringa_lee2017-04-17 17:28:55
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)))