Câu trả lời tùy thuộc vào ngữ nghĩa mong muốn của a - b
.
Nếu bạn chỉ muốn các yếu tố đầu tiên, sau đó cắt là cách tự nhiên để làm điều đó:
In [11]: a = [1, 2, 3]
In [12]: b = [4 , 5]
In [13]: ab = a + b
In [14]: ab[:len(a)]
Out[14]: [1, 2, 3]
Nếu, mặt khác, bạn muốn loại bỏ các yếu tố của danh sách đầu tiên không tìm thấy trong lần thứ hai danh mục:
In [15]: [v for v in ab if v not in b]
Out[15]: [1, 2, 3]
loại thứ hai hoạt động được một cách tự nhiên hơn thể hiện bằng bộ:
In [18]: set(ab) - set(b)
Out[18]: set([1, 2, 3])
Lưu ý rằng nói chung điều này không bảo vệ thứ tự của các phần tử (vì các bộ không có thứ tự). Nếu đặt hàng là quan trọng, và b
có khả năng là dài, chuyển đổi b
thành một tập thể cải thiện hiệu suất:
In [19]: bset = set(b)
In [20]: [v for v in ab if v not in bset]
Out[20]: [1, 2, 3]
Đối với từ điển, đã tồn tại một "Ngoài" hoạt động tại chỗ. Nó được gọi là dict.update()
.
Kết quả sẽ là gì đối với '[1, 2, 3, 1, 2, 1] - [1, 2]'? – JJJ
@Juhana Câu hỏi nổi bật. Nó sẽ là: [3]. – dublintech
Sau đó, tôi muốn nói tại sao không '[3, 1, 2, 1]'? –