TL; DR:
โซลูชัน (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`
วิธีแก้ปัญหา (2) คุณต้องการรายการที่จัดเรียง
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)
คำอธิบาย:
(1)คุณสามารถใช้ NumPy ของsetdiff1d
( array1
, array2
, assume_unique
= False
)
assume_unique
ถามผู้ใช้ว่าอาร์เรย์นั้นไม่ซ้ำกันหรือไม่
หากFalse
มีการกำหนดองค์ประกอบที่ไม่ซ้ำกันก่อน
ถ้าTrue
ฟังก์ชันจะถือว่าองค์ประกอบนั้นไม่ซ้ำกันอยู่แล้วและฟังก์ชันจะข้ามการกำหนดองค์ประกอบที่ไม่ซ้ำกัน
อัตราผลตอบแทนนี้ค่าที่ไม่ซ้ำกันในarray1
ที่ไม่ได้array2
อยู่ใน assume_unique
เป็นFalse
ค่าเริ่มต้น
หากคุณกังวลเกี่ยวกับองค์ประกอบเฉพาะ (ขึ้นอยู่กับการตอบสนองของ Chinny84 ) ให้ใช้ (โดยที่assume_unique=False
=> ค่าเริ่มต้น):
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)
สำหรับผู้ที่ต้องการเรียงคำตอบฉันได้สร้างฟังก์ชันที่กำหนดเอง:
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
หากต้องการรับคำตอบให้เรียกใช้:
main_list = setdiff_sorted(list_2,list_1)
หมายเหตุด้านข้าง:
(a) โซลูชันที่ 2 (ฟังก์ชันกำหนดเองsetdiff_sorted
) ส่งคืนรายการ (เทียบกับอาร์เรย์ในโซลูชัน 1)
(b) หากคุณไม่แน่ใจว่าองค์ประกอบนั้นไม่ซ้ำกันหรือไม่เพียงแค่ใช้การตั้งค่าเริ่มต้นของ NumPy setdiff1d
ในทั้งสองโซลูชัน A และ B อะไรคือตัวอย่างของภาวะแทรกซ้อน ดูหมายเหตุ (c)
(c) สิ่งต่างๆจะแตกต่างกันไปหากรายการใดรายการหนึ่งจากสองรายการไม่ซ้ำกัน
พูดlist_2
ไม่ซ้ำใคร: list2 = ["a", "f", "c", "m", "m"]
. เก็บlist1
ตามที่เป็นอยู่: list_1 = ["a", "b", "c", "d", "e"]
การตั้งค่าเริ่มต้นของassume_unique
ผลตอบแทน["f", "m"]
(ในทั้งสองวิธี) อย่างไรก็ตามหากคุณตั้งค่าเป็นค่าเริ่มต้น โปรดทราบว่าคำตอบทั้งสองจะเรียงลำดับassume_unique=True
["f", "m", "m"]
การแก้ปัญหาทั้งสองให้ ทำไม? เนื่องจากผู้ใช้สันนิษฐานว่าองค์ประกอบไม่ซ้ำกัน) ดังนั้นควรเก็บไว้ดีกว่าassume_unique
หลามnumpy
list_2
ที่ไม่ปรากฏที่ไหนเลยlist_1
หรือองค์ประกอบในlist_2
นั้นไม่มีอยู่ในดัชนีเดียวกันในlist_1
?