cari

Rumah  >  Soal Jawab  >  teks badan

算法 - Python二维数组怎么求并集?

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,怎么破?只能自己实现遍历么?

PHPzPHPz2887 hari yang lalu516

membalas semua(3)saya akan balas

  • 大家讲道理

    大家讲道理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']]

    balas
    0
  • 天蓬老师

    天蓬老师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']]
    

    balas
    0
  • ringa_lee

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

    balas
    0
  • Batalbalas