TL; DR:
GIẢI PHÁP (1)
import numpy as np
main_list = np.setdiff1d(list_2,list_1)
# yields the elements in `list_2` that are NOT in `list_1`
GIẢI PHÁP (2) Bạn muốn một danh sách được sắp xếp
def setdiff_sorted(array1,array2,assume_unique=False):
ans = np.setdiff1d(array1,array2,assume_unique).tolist()
if assume_unique:
return sorted(ans)
return ans
main_list = setdiff_sorted(list_2,list_1)
GIẢI THÍCH:
(1) Bạn có thể sử dụng NumPy của setdiff1d
( array1
, array2
, assume_unique
= False
).
assume_unique
hỏi người dùng NẾU các mảng C ALNG KHÔNG ĐỘC ĐÁO.
Nếu False
, sau đó các yếu tố duy nhất được xác định đầu tiên.
Nếu True
, hàm sẽ cho rằng các phần tử đã là duy nhất Hàm AND sẽ bỏ qua việc xác định các phần tử duy nhất.
Sản lượng này các giá trị duy nhất trong array1
đó là không trong array2
. assume_unique
là False
theo mặc định.
Nếu bạn quan tâm đến các yếu tố duy nhất (dựa trên phản hồi của Chinny84 ), thì chỉ cần sử dụng (trong đó assume_unique=False
=> giá trị mặc định):
import numpy as np
list_1 = ["a", "b", "c", "d", "e"]
list_2 = ["a", "f", "c", "m"]
main_list = np.setdiff1d(list_2,list_1)
# yields the elements in `list_2` that are NOT in `list_1`
(2)
Đối với những người muốn sắp xếp câu trả lời, tôi đã tạo một chức năng tùy chỉnh:
import numpy as np
def setdiff_sorted(array1,array2,assume_unique=False):
ans = np.setdiff1d(array1,array2,assume_unique).tolist()
if assume_unique:
return sorted(ans)
return ans
Để có câu trả lời, hãy chạy:
main_list = setdiff_sorted(list_2,list_1)
GHI CHÚ:
(a) Giải pháp 2 (chức năng tùy chỉnh setdiff_sorted
) trả về một danh sách (so với một mảng trong giải pháp 1).
(b) Nếu bạn không chắc chắn các phần tử có phải là duy nhất hay không, chỉ cần sử dụng cài đặt mặc định của NumPy setdiff1d
trong cả hai giải pháp A và B. Điều gì có thể là một ví dụ về biến chứng? Xem ghi chú (c).
(c) Mọi thứ sẽ khác nếu một trong hai danh sách không phải là duy nhất.
Nói list_2
không phải là duy nhất : list2 = ["a", "f", "c", "m", "m"]
. Giữ nguyên trạng list1
: list_1 = ["a", "b", "c", "d", "e"]
Đặt giá trị mặc định của assume_unique
sản lượng ["f", "m"]
(trong cả hai giải pháp). TUY NHIÊN, nếu bạn đặt assume_unique=True
, cả hai giải pháp đều cho ["f", "m", "m"]
. Tại sao? Điều này là do người dùng ĐÁNH GIÁ rằng các yếu tố là duy nhất). Do đó, CNTT TỐT HƠN ĐỂ GIỮassume_unique
đến giá trị mặc định của nó. Lưu ý rằng cả hai câu trả lời được sắp xếp.
trănnumpy
list_2
đó không xuất hiện ở đâulist_1
hoặc các yếu tốlist_2
không có cùng chỉ mục tronglist_1
?