Saya mencoba menulis kode python dan saya memiliki daftar daftar seperti di bawah ini: [[1],[1,2],[3,4],[3],[4,5,6],[2 ,5,7,8]] Saya ingin menggunakan setiap elemen untuk perbedaan elemen di atas, misalnya: elemen pertama akan berbeda dengan dirinya sendiri dan yang kedua akan membedakan elemen pertama, elemen ketiga akan membedakan elemen pertama dan elemen kedua dll.

first= list(set([1]).difference(set([1)))
second= list(set([1,2]).difference(set([1)))
third= list(set([3,4]).difference(set([1,2])).difference(set([1])))
Fourth= list(set([3]).difference(set([3,4])).difference(set([1,2])).difference(set([1])))

Dan "kembali" akan [pertama, kedua, ketiga, Keempat ........]

Apakah ada yang punya ide? Terima kasih

-1
李安提 11 Mei 2021, 10:41

1 menjawab

Jawaban Terbaik

Saya telah sedikit mengubah implementasi yang disarankan oleh @OmarAflak di komentar. Menggunakan kembali hasil antara tidak akan berfungsi jika hasil antara adalah daftar kosong [], untuk mengatasinya saya memiliki satu set prev yang melacak semua elemen yang terlihat sejauh ini.

def difference(seq):
    res = []
    prev = set(seq[0])
    for i in seq:
        res.append(list(set(i).difference(prev)))
        prev.update(i)
    return res

seq =  [[1],[1,2],[3,4],[3],[4,5,6],[2,5,7,8]]
res = difference(seq)
print(res)

seq =  [[1],[1,2],[3,4],[3],[4,5,6],[2,5,7,8], [1, 2, 18], [9]]
res = difference(seq)
print(res)

Keluaran

[[], [2], [3, 4], [], [5, 6], [8, 7]]
[[], [2], [3, 4], [], [5, 6], [8, 7], [18], [9]]

Jika jawaban ini membantu Anda, pilih dan terima solusinya.

1
python_user 11 Mei 2021, 09:19